<?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=Michael+S</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=Michael+S"/>
	<link rel="alternate" type="text/html" href="https://en.bitcoin.it/wiki/Special:Contributions/Michael_S"/>
	<updated>2026-04-22T03:19:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Segwit_support&amp;diff=63466</id>
		<title>Segwit support</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Segwit_support&amp;diff=63466"/>
		<updated>2017-06-18T15:50:13Z</updated>

		<summary type="html">&lt;p&gt;Michael S: Added Poloniex to the table, like Kraken and Bitstamp already (all of them still without any support statement)&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.&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Developers: Please add a row for yourself 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;
| {{AccJuly}} || it is a workable solution, provided it is activated before August 1 (and therefore BIP148-compatible)&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 | Developer&lt;br /&gt;
! rowspan=2 | Aff* &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;
| Karl-Johan Alm || Core || {{Prefer}} || {{Acceptable}} || {{Acceptable}} || {{Acceptable}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Bryan Bishop || Core || {{Prefer}} || {{Wanting}} || {{Acceptable}} || {{Weak}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| ฿tcDrak || Core || {{Prefer}} || {{Acceptable}} || {{Acceptable}} || {{No}} || {{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}} || {{AccJuly}} || {{No}} || {{Deficient}}&lt;br /&gt;
|-&lt;br /&gt;
| Christian Decker || c-lightning || {{Prefer}} || {{Acceptable}} ||  ||  || || &lt;br /&gt;
|-&lt;br /&gt;
| Nicolas Dorier || Core || {{Prefer}} || {{Deficient}} || {{Acceptable}} || {{AccJuly}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| Thaddeus Dryja || lit || {{Prefer}} || {{No}} || {{Acceptable}} || {{Acceptable}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Marco Falke || Core || {{Prefer}} || {{Deficient}} || {{Prefer}} || {{Deficient}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| Mark Friedenbach || BIP 68/112 || {{Prefer}} || {{Prefer}} || {{No}} || {{AccJuly}} || {{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}} || {{AccJuly}} || {{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;
| Laolu &amp;quot;roasbeef&amp;quot; Osuntokun || lnd || {{Prefer}} || || || || {{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}} ||  ||  ||  || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Paul Sztorc ||  || {{Prefer}} || {{Deficient}} || {{Wanting}} || {{AccJuly}} || {{Evaluating}} || {{No}}&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 || Elements || {{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;
| Leo Wandersleb || Mycelium || {{Prefer}} || {{Prefer}} || {{Acceptable}} || {{Weak}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Pieter Wuille || Core || {{Prefer}} || || || || {{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;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When adding companies below, sources for each position MUST be provided.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! rowspan=2 | Company &lt;br /&gt;
! rowspan=2 | Service&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;
| Abra || wallet || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || {{AccJuly}} || {{AccJuly}}&amp;lt;ref name=&amp;quot;silbert&amp;quot; /&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitcoin India || exchange/miner || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitfinex || exchange || {{Acceptable}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Acceptable}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitfury || miner || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Acceptable}} || || {{AccJuly}} || {{AccJuly}}&amp;lt;ref name=&amp;quot;silbert&amp;quot; /&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitmain || miner || {{AccJuly}}&amp;lt;ref name=&amp;quot;bitmain&amp;quot;&amp;gt;[https://blog.bitmain.com/en/uahf-contingency-plan-uasf-bip148/ Bitmain&#039;s plot against BIP148]&amp;lt;/ref&amp;gt; || {{No}} || || {{AccJuly}} || {{AccJuly}}&amp;lt;ref name=&amp;quot;bitmain&amp;quot; /&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitonic/BL3P.eu || exchange || {{Prefer}}&amp;lt;ref name=&amp;quot;bitonic&amp;quot;&amp;gt;[https://bitonic.nl/en/news/138/our-position-on-scaling-proposals Bitonic&#039;s position on scaling proposals]&amp;lt;/ref&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;bitonic&amp;quot;/&amp;gt; || {{Acceptable}}&amp;lt;ref name=&amp;quot;bitonic&amp;quot;/&amp;gt; || {{Weak}}&amp;lt;ref name=&amp;quot;bitonic&amp;quot;/&amp;gt; || {{No}}&amp;lt;ref name=&amp;quot;bitonic&amp;quot;/&amp;gt; || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Bitpay || wallet || {{Prefer}}&amp;lt;ref name=&amp;quot;bccore_swadoption&amp;quot;/&amp;gt; || {{No}} || || {{Prefer}} || {{Prefer}}&amp;lt;ref name=&amp;quot;silbert&amp;quot; /&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitrated || || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitrefill || merchant || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitsquare || exchange || {{Prefer}} || {{Prefer}}&amp;lt;ref name=&amp;quot;bitsquare&amp;quot;&amp;gt;[https://forum.bitsquare.io/t/bitsquare-will-support-uasf-bitcoin-not-bitmaincoin/2265 Bitsquare will support UASF Bitcoin not BitMainCoin]&amp;lt;/ref&amp;gt; || {{Acceptable}}&amp;lt;ref name=&amp;quot;bitsquare&amp;quot;/&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitstamp || exchange || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Bittylicious || exchange || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref&amp;gt;[https://twitter.com/Bittylicious_/status/867305106668224513 Bittylicious answer on Twitter]&amp;lt;/ref&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Blockchain.info || wallet || {{Acceptable}}&amp;lt;ref name=&amp;quot;bccore_swadoption&amp;quot;/&amp;gt; || || || {{AccJuly}} || {{AccJuly}}&amp;lt;ref name=&amp;quot;silbert&amp;quot; /&amp;gt; || &lt;br /&gt;
|-&lt;br /&gt;
| blockonomics || || {{Prefer}} || {{Prefer}}&amp;lt;ref&amp;gt;[https://twitter.com/blockonomics_co/status/851738251509497856 blockonomics announcement on Twitter]&amp;lt;/ref&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Bustabit|| gambling || {{Prefer}}&amp;lt;ref name=&amp;quot;bustabit&amp;quot;&amp;gt;[https://www.bustabit.com/statement-on-forks Bustabit Statement on Bitcoin Forks]&amp;lt;/ref&amp;gt; || {{Acceptable}}&amp;lt;ref name=&amp;quot;bustabit&amp;quot;/&amp;gt; || || || {{AccJuly}}&amp;lt;ref name=&amp;quot;bustabit&amp;quot;/&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| Ciphrex || wallet / dev stack || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Acceptable}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Coinbase || wallet || {{Acceptable}}&amp;lt;ref name=&amp;quot;bccore_swadoption&amp;quot;/&amp;gt; || || || {{AccJuly}} || {{AccJuly}}&amp;lt;ref name=&amp;quot;silbert&amp;quot; /&amp;gt; || &lt;br /&gt;
|-&lt;br /&gt;
| CoinGate || exchange || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| CoinJar || wallet || || {{Evaluating}}&amp;lt;ref&amp;gt;[https://twitter.com/GetCoinJar/status/875581525730787329 CoinJar answer on Twitter]&amp;lt;/ref&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Coinkite || || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| coinomi || wallet || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| DigitalBitbox || wallet(hardware) || {{Prefer}} || {{Acceptable}} || {{Prefer}}|| || ||&lt;br /&gt;
|-&lt;br /&gt;
| Échange de Montréal || exchange || {{Prefer}}&amp;lt;ref name=&amp;quot;echangedemontreal&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;echangedemontreal&amp;quot; /&amp;gt; || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Electrum || wallet || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Kraken || exchange || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| LightningASIC || miner || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| OneHash || betting || {{Prefer}}&amp;lt;ref&amp;gt;[https://blog.onehash.com/sick-of-presidential-election-3f1a2defbbbf OneHash, &amp;quot;Sick of presidential election ?!&amp;quot;]&amp;lt;/ref&amp;gt; || || || {{AccJuly}} || {{AccJuly}}&amp;lt;ref name=&amp;quot;silbert&amp;quot; /&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| Poloniex || exchange || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Slushpool || miner || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Acceptable}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| TheRockTrading || exchange || || {{Evaluating}}&amp;lt;ref&amp;gt;[https://twitter.com/TheRockTrading/status/872464394034315269 @TheRockTrading message on Twitter]&amp;lt;/ref&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Vaultoro || exchange || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Acceptable}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || {{AccJuly}} || {{AccJuly}}&amp;lt;ref name=&amp;quot;silbert&amp;quot; /&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| Walltime || || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Xapo || wallet || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || {{Prefer}} || {{Prefer}}&amp;lt;ref&amp;gt;[https://twitter.com/tedmrogers/status/867362691370954752 Tweet by president of Xapo]&amp;lt;/ref&amp;gt; || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;bccore_swadoption&amp;quot;&amp;gt;[https://bitcoincore.org/en/segwit_adoption/ Bitcoin Core&#039;s Segwit adoption list]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;coindance&amp;quot;&amp;gt;[https://coin.dance/poli Coin Dance, &amp;quot;Global Bitcoin Political Support &amp;amp; Public Opinion&amp;quot;]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;silbert&amp;quot;&amp;gt;[https://medium.com/@DCGco/bitcoin-scaling-agreement-at-consensus-2017-133521fe9a77 Digital Currency Group, &amp;quot;Bitcoin Scaling Agreement at Consensus 2017&amp;quot;]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;echangedemontreal&amp;quot;&amp;gt;[https://twitter.com/echangedemtl/status/875781093261271040 Échange de Montréal on twitter]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=44883</id>
		<title>Vanitygen</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=44883"/>
		<updated>2014-03-10T22:22:26Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Vanity addresses for other crypto-coins */ PPCoin is now called Peercoin&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Vanitygen&#039;&#039;&#039; is a command-line vanity bitcoin address generator.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re tired of the random, cryptic addresses generated by regular bitcoin clients, you can use vanitygen to create a more personalized address.  Add unique flair when you tell people to send bitcoins to 1stDownqyMHHqnDPRSfiZ5GXJ8Gk9dbjL or dogecoins to DMooNvsY5dJth17qop3RUUnZG3ta3MW2Ua.  Alternatively, vanitygen can be used to generate random addresses offline.&lt;br /&gt;
&lt;br /&gt;
Vanitygen accepts as input a pattern, or list of patterns to search for, and produces a list of addresses and private keys.  Vanitygen&#039;s search is probabilistic, and the amount of time required to find a given pattern depends on how complex the pattern is, the speed of your computer, and whether you get lucky.&lt;br /&gt;
&lt;br /&gt;
The example below illustrates a session of vanitygen.  It is typical, and took about 10 sec to finish, using my Core 2 Duo E6600 CPU on x86-64 Linux:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./vanitygen 1Boat&lt;br /&gt;
Difficulty: 4476342&lt;br /&gt;
Pattern: 1Boat                                                                 &lt;br /&gt;
Address: 1BoatSLRHtKNngkdXEeobR76b53LETtpyT&lt;br /&gt;
Privkey: 5J4XJRyLVgzbXEgh8VNi4qovLzxRftzMd8a18KkdXv4EqAwX3tS&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vanitygen includes components to perform address searching on your CPU (vanitygen) and your OpenCL-compatible GPU (oclvanitygen).  Both can be built from source, and both are included in the Windows binary package.  Also included is oclvanityminer, the vanity address mining client.  Oclvanityminer can be used to automatically claim bounties on sites such as [[User:ThePiachu|ThePiachu]]&#039;s [[Vanity Pool]].&lt;br /&gt;
&lt;br /&gt;
Current version: 0.22&lt;br /&gt;
&lt;br /&gt;
Windows x86+x64 binaries [https://github.com/downloads/samr7/vanitygen/vanitygen-0.20-win.zip here].  PGP signature [http://insight.gotdns.org/~samr7/vanitygen-0.20-win.zip.asc here].&lt;br /&gt;
&lt;br /&gt;
Get the source from [https://github.com/samr7/vanitygen GitHub].  Includes Makefiles for Linux and Mac OS X.&lt;br /&gt;
&lt;br /&gt;
Main discussion at [https://bitcointalk.org/index.php?topic=25804.0 BitCoinTalk]&lt;br /&gt;
&lt;br /&gt;
For AMD Catalyst 13.1+ you need to run the AMD APP SDK Runtime from Catalyst 12.10 in order to get this program to work. (So all your Catalyst drivers would be brand new except for the SDK Runtime.) This is discussed on [https://github.com/samr7/vanitygen/issues/19 GitHub]. For Linux, use AMD APP SDK 2.7.&lt;br /&gt;
&lt;br /&gt;
Also the latest source doesn&#039;t work properly for high-end AMD cards (7XXX and greater). Solution is to change line 459 in oclengine.c from: return quirks; to: return quirks &amp;amp; ~VG_OCL_AMD_BFI_INT;&lt;br /&gt;
Windows x86+x64 binaries that solve this problem plus provide support for compressed keys [https://lifeboat.com/oclvanitygen here]. PGP signature [https://lifeboat.com/oclvanitygen.zip.sig here]. If you have any problems with the binaries, join the relevant [https://bitcointalk.org/index.php?topic=301068.0 BitCoinTalk discussion].&lt;br /&gt;
&lt;br /&gt;
== Expected keysearch rate ==&lt;br /&gt;
Main article: [[Vanitygen keysearch rate]]&lt;br /&gt;
&lt;br /&gt;
What key search rate can I expect from hardware X?&lt;br /&gt;
&lt;br /&gt;
Detailed list forthcoming.  Some ballpark estimates are listed below.&lt;br /&gt;
&lt;br /&gt;
 Dual-core desktop CPUs, 32-bit mode: 100-250 Kkey/s.&lt;br /&gt;
 Dual-core desktop CPUs, 64-bit mode: 150-450 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 32-bit mode: 200-400 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 64-bit mode: 300-750 Kkey/s.&lt;br /&gt;
 NVIDIA GT200 GPUs: up to 6.5 Mkey/s&lt;br /&gt;
 AMD Radeon 58XX, 68XX GPUs: up to 23.5 Mkey/s.&lt;br /&gt;
 AMD Radeon 69XX GPUs: up to 19.5 Mkey/s.&lt;br /&gt;
&lt;br /&gt;
As vanitygen performs a lot of large integer arithmetic, running it in 64-bit mode makes a huge difference in key search rate, easily a 50% improvement over 32-bit mode.  If you are using a 64-bit edition of Windows, and not using a GPU, be sure to use vanitygen64.exe.&lt;br /&gt;
&lt;br /&gt;
Radeon 58XX outperforms Radeon 69XX by a very comfortable margin.  Oclvanitygen is sensitive to integer multiply throughput, and Radeon 58XX can multiply concurrently with other operations.  At similar clocks, a hobbled Radeon 5830 will outperform a Radeon 6970.&lt;br /&gt;
&lt;br /&gt;
In custom builds, CPU performance will be less than expected if the OpenSSL library is an older version (&amp;lt;1.0.0d) or is not built with the appropriate optimizations enabled.&lt;br /&gt;
&lt;br /&gt;
== Vanity addresses for other crypto-coins ==&lt;br /&gt;
While all &amp;quot;normal&amp;quot; bitcoin addresses start with a &amp;quot;1&amp;quot; (one) (except multi-signature addresses that start with &amp;quot;3&amp;quot;), some other crypto-coins use different address name spaces. Vanitygen (as of version 0.22) can be used to produce vanity addresses for these crypto coins as well (but not for [http://bitmessage.org bitmessage] addresses), by using the &amp;quot;-X&amp;quot; option. The following list provides some example command line calls and also indicates the address range for the respective coin (in ascending order of the &amp;quot;-X&amp;quot; parameter):&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC), &#039;&#039;&#039;Devcoin&#039;&#039;&#039; (DVC), &#039;&#039;&#039;Freicoin&#039;&#039;&#039; (FRC), &#039;&#039;&#039;Terracoin&#039;&#039;&#039; (TRC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 0 1 -k&lt;br /&gt;
or simply just&lt;br /&gt;
 $ ./vanitygen 1 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC) etc. &#039;&#039;&#039;multi-signature&#039;&#039;&#039; addresses:&lt;br /&gt;
 $ ./vanitygen -X 5 3 -k&lt;br /&gt;
 $ ./vanitygen -X 5 31 -k&lt;br /&gt;
 $ ./vanitygen -X 5 39 -k&lt;br /&gt;
 $ ./vanitygen -X 5 3A -k&lt;br /&gt;
 $ ./vanitygen -X 5 3R -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Novacoin&#039;&#039;&#039; (NVC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 8 4 -k&lt;br /&gt;
 $ ./vanitygen -X 8 4D -k&lt;br /&gt;
 $ ./vanitygen -X 8 4Z -k&lt;br /&gt;
 $ ./vanitygen -X 8 4a -k&lt;br /&gt;
 $ ./vanitygen -X 8 4d -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Feathercoin&#039;&#039;&#039; (FTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 14 6 -k&lt;br /&gt;
 $ ./vanitygen -X 14 6d -k&lt;br /&gt;
 $ ./vanitygen -X 14 6z -k&lt;br /&gt;
 $ ./vanitygen -X 14 7 -k&lt;br /&gt;
 $ ./vanitygen -X 14 71 -k&lt;br /&gt;
 $ ./vanitygen -X 14 72 -k&lt;br /&gt;
 $ ./vanitygen -X 14 73 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Anoncoin&#039;&#039;&#039; (ANC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 23 A -k&lt;br /&gt;
 $ ./vanitygen -X 23 AF -k&lt;br /&gt;
 $ ./vanitygen -X 23 AZ -k&lt;br /&gt;
 $ ./vanitygen -X 23 Aa -k&lt;br /&gt;
 $ ./vanitygen -X 23 Af -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Digitalcoin&#039;&#039;&#039; (DGC) or &#039;&#039;&#039;Dogecoin&#039;&#039;&#039; (DOGE) addresses:&lt;br /&gt;
 $ ./vanitygen -X 30 D -k&lt;br /&gt;
 $ ./vanitygen -X 30 D5 -k&lt;br /&gt;
 $ ./vanitygen -X 30 D9 -k&lt;br /&gt;
 $ ./vanitygen -X 30 DA -k&lt;br /&gt;
 $ ./vanitygen -X 30 DU -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Franko&#039;&#039;&#039; (FRK) addresses:&lt;br /&gt;
 $ ./vanitygen -X 35 F -k&lt;br /&gt;
 $ ./vanitygen -X 35 FD -k&lt;br /&gt;
 $ ./vanitygen -X 35 FE -k&lt;br /&gt;
 $ ./vanitygen -X 35 FN -k&lt;br /&gt;
 $ ./vanitygen -X 35 FR -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Litecoin&#039;&#039;&#039; (LTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 48 L -k&lt;br /&gt;
 $ ./vanitygen -X 48 LK -k&lt;br /&gt;
 $ ./vanitygen -X 48 LZ -k&lt;br /&gt;
 $ ./vanitygen -X 48 La -k&lt;br /&gt;
 $ ./vanitygen -X 48 Li -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Namecoin&#039;&#039;&#039; (NMC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 52 M -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mv -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mz -k&lt;br /&gt;
 $ ./vanitygen -X 52 N -k&lt;br /&gt;
 $ ./vanitygen -X 52 N1 -k&lt;br /&gt;
 $ ./vanitygen -X 52 N9 -k&lt;br /&gt;
 $ ./vanitygen -X 52 NA -k&lt;br /&gt;
 $ ./vanitygen -X 52 NK -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Peercoin&#039;&#039;&#039;  (=&#039;&#039;&#039;PPCoin&#039;&#039;&#039;) (PPC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 55 P -k&lt;br /&gt;
 $ ./vanitygen -X 55 P8 -k&lt;br /&gt;
 $ ./vanitygen -X 55 P9 -k&lt;br /&gt;
 $ ./vanitygen -X 55 PA -k&lt;br /&gt;
 $ ./vanitygen -X 55 PX -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Vertcoin&#039;&#039;&#039; (VTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 71 V -k&lt;br /&gt;
 $ ./vanitygen -X 71 VZ -k&lt;br /&gt;
 $ ./vanitygen -X 71 Va -k&lt;br /&gt;
 $ ./vanitygen -X 71 Vy -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;YaCoin&#039;&#039;&#039; (YAC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 77 X -k&lt;br /&gt;
 $ ./vanitygen -X 77 Xz -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y1 -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y9 -k&lt;br /&gt;
 $ ./vanitygen -X 77 YA -k&lt;br /&gt;
 $ ./vanitygen -X 77 YP -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;BBQcoin&#039;&#039;&#039; (BQC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 85 b -k&lt;br /&gt;
 $ ./vanitygen -X 85 bC -k&lt;br /&gt;
 $ ./vanitygen -X 85 bZ -k&lt;br /&gt;
 $ ./vanitygen -X 85 ba -k&lt;br /&gt;
 $ ./vanitygen -X 85 bc -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Ixcoin&#039;&#039;&#039; (IXC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 138 x -k&lt;br /&gt;
 $ ./vanitygen -X 138 xX -k&lt;br /&gt;
 $ ./vanitygen -X 138 xZ -k&lt;br /&gt;
 $ ./vanitygen -X 138 xa -k&lt;br /&gt;
 $ ./vanitygen -X 138 xv -k&lt;br /&gt;
&lt;br /&gt;
Generally, to find out the address format of a given crypto-coin (i.e. the number after the -X option of vanitygen) one can use this service:&lt;br /&gt;
    &amp;lt;nowiki&amp;gt;http://darkgamex.ch:2751/q/decode_address/&amp;lt;Address&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Example: Take any Litecoin address, e.g. &amp;quot;LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&amp;quot;, and submit this URL:&lt;br /&gt;
    http://darkgamex.ch:2751/q/decode_address/LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&lt;br /&gt;
The browser output will be:&lt;br /&gt;
    30:265dcf8616a9723d3b4ba35c246b041e20013597&lt;br /&gt;
The &#039;&#039;&#039;30&#039;&#039;&#039; is Litecoin&#039;s address format in hex (!), i.e. &#039;&#039;&#039;30&#039;&#039;&#039; (hex) = 48 (decimal) [because &#039;&#039;&#039;3&#039;&#039;&#039;*16 + &#039;&#039;&#039;0&#039;&#039;&#039;*1 = 48], i.e. use &#039;&#039;&#039;-X 48&#039;&#039;&#039; in vanitygen to generate Litecoin addresses.&lt;br /&gt;
&lt;br /&gt;
Some related info here: https://en.bitcoin.it/wiki/List_of_address_prefixes&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Firstbits]]&lt;br /&gt;
* [[Bitcoin Vanity Generation Website]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Vanity address]]&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=44882</id>
		<title>Vanitygen</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=44882"/>
		<updated>2014-03-10T22:20:16Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Vanity addresses for other crypto-coins */ Added Vertcoin (VTC) to the list of examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Vanitygen&#039;&#039;&#039; is a command-line vanity bitcoin address generator.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re tired of the random, cryptic addresses generated by regular bitcoin clients, you can use vanitygen to create a more personalized address.  Add unique flair when you tell people to send bitcoins to 1stDownqyMHHqnDPRSfiZ5GXJ8Gk9dbjL or dogecoins to DMooNvsY5dJth17qop3RUUnZG3ta3MW2Ua.  Alternatively, vanitygen can be used to generate random addresses offline.&lt;br /&gt;
&lt;br /&gt;
Vanitygen accepts as input a pattern, or list of patterns to search for, and produces a list of addresses and private keys.  Vanitygen&#039;s search is probabilistic, and the amount of time required to find a given pattern depends on how complex the pattern is, the speed of your computer, and whether you get lucky.&lt;br /&gt;
&lt;br /&gt;
The example below illustrates a session of vanitygen.  It is typical, and took about 10 sec to finish, using my Core 2 Duo E6600 CPU on x86-64 Linux:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./vanitygen 1Boat&lt;br /&gt;
Difficulty: 4476342&lt;br /&gt;
Pattern: 1Boat                                                                 &lt;br /&gt;
Address: 1BoatSLRHtKNngkdXEeobR76b53LETtpyT&lt;br /&gt;
Privkey: 5J4XJRyLVgzbXEgh8VNi4qovLzxRftzMd8a18KkdXv4EqAwX3tS&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vanitygen includes components to perform address searching on your CPU (vanitygen) and your OpenCL-compatible GPU (oclvanitygen).  Both can be built from source, and both are included in the Windows binary package.  Also included is oclvanityminer, the vanity address mining client.  Oclvanityminer can be used to automatically claim bounties on sites such as [[User:ThePiachu|ThePiachu]]&#039;s [[Vanity Pool]].&lt;br /&gt;
&lt;br /&gt;
Current version: 0.22&lt;br /&gt;
&lt;br /&gt;
Windows x86+x64 binaries [https://github.com/downloads/samr7/vanitygen/vanitygen-0.20-win.zip here].  PGP signature [http://insight.gotdns.org/~samr7/vanitygen-0.20-win.zip.asc here].&lt;br /&gt;
&lt;br /&gt;
Get the source from [https://github.com/samr7/vanitygen GitHub].  Includes Makefiles for Linux and Mac OS X.&lt;br /&gt;
&lt;br /&gt;
Main discussion at [https://bitcointalk.org/index.php?topic=25804.0 BitCoinTalk]&lt;br /&gt;
&lt;br /&gt;
For AMD Catalyst 13.1+ you need to run the AMD APP SDK Runtime from Catalyst 12.10 in order to get this program to work. (So all your Catalyst drivers would be brand new except for the SDK Runtime.) This is discussed on [https://github.com/samr7/vanitygen/issues/19 GitHub]. For Linux, use AMD APP SDK 2.7.&lt;br /&gt;
&lt;br /&gt;
Also the latest source doesn&#039;t work properly for high-end AMD cards (7XXX and greater). Solution is to change line 459 in oclengine.c from: return quirks; to: return quirks &amp;amp; ~VG_OCL_AMD_BFI_INT;&lt;br /&gt;
Windows x86+x64 binaries that solve this problem plus provide support for compressed keys [https://lifeboat.com/oclvanitygen here]. PGP signature [https://lifeboat.com/oclvanitygen.zip.sig here]. If you have any problems with the binaries, join the relevant [https://bitcointalk.org/index.php?topic=301068.0 BitCoinTalk discussion].&lt;br /&gt;
&lt;br /&gt;
== Expected keysearch rate ==&lt;br /&gt;
Main article: [[Vanitygen keysearch rate]]&lt;br /&gt;
&lt;br /&gt;
What key search rate can I expect from hardware X?&lt;br /&gt;
&lt;br /&gt;
Detailed list forthcoming.  Some ballpark estimates are listed below.&lt;br /&gt;
&lt;br /&gt;
 Dual-core desktop CPUs, 32-bit mode: 100-250 Kkey/s.&lt;br /&gt;
 Dual-core desktop CPUs, 64-bit mode: 150-450 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 32-bit mode: 200-400 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 64-bit mode: 300-750 Kkey/s.&lt;br /&gt;
 NVIDIA GT200 GPUs: up to 6.5 Mkey/s&lt;br /&gt;
 AMD Radeon 58XX, 68XX GPUs: up to 23.5 Mkey/s.&lt;br /&gt;
 AMD Radeon 69XX GPUs: up to 19.5 Mkey/s.&lt;br /&gt;
&lt;br /&gt;
As vanitygen performs a lot of large integer arithmetic, running it in 64-bit mode makes a huge difference in key search rate, easily a 50% improvement over 32-bit mode.  If you are using a 64-bit edition of Windows, and not using a GPU, be sure to use vanitygen64.exe.&lt;br /&gt;
&lt;br /&gt;
Radeon 58XX outperforms Radeon 69XX by a very comfortable margin.  Oclvanitygen is sensitive to integer multiply throughput, and Radeon 58XX can multiply concurrently with other operations.  At similar clocks, a hobbled Radeon 5830 will outperform a Radeon 6970.&lt;br /&gt;
&lt;br /&gt;
In custom builds, CPU performance will be less than expected if the OpenSSL library is an older version (&amp;lt;1.0.0d) or is not built with the appropriate optimizations enabled.&lt;br /&gt;
&lt;br /&gt;
== Vanity addresses for other crypto-coins ==&lt;br /&gt;
While all &amp;quot;normal&amp;quot; bitcoin addresses start with a &amp;quot;1&amp;quot; (one) (except multi-signature addresses that start with &amp;quot;3&amp;quot;), some other crypto-coins use different address name spaces. Vanitygen (as of version 0.22) can be used to produce vanity addresses for these crypto coins as well (but not for [http://bitmessage.org bitmessage] addresses), by using the &amp;quot;-X&amp;quot; option. The following list provides some example command line calls and also indicates the address range for the respective coin (in ascending order of the &amp;quot;-X&amp;quot; parameter):&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC), &#039;&#039;&#039;Devcoin&#039;&#039;&#039; (DVC), &#039;&#039;&#039;Freicoin&#039;&#039;&#039; (FRC), &#039;&#039;&#039;Terracoin&#039;&#039;&#039; (TRC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 0 1 -k&lt;br /&gt;
or simply just&lt;br /&gt;
 $ ./vanitygen 1 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC) etc. &#039;&#039;&#039;multi-signature&#039;&#039;&#039; addresses:&lt;br /&gt;
 $ ./vanitygen -X 5 3 -k&lt;br /&gt;
 $ ./vanitygen -X 5 31 -k&lt;br /&gt;
 $ ./vanitygen -X 5 39 -k&lt;br /&gt;
 $ ./vanitygen -X 5 3A -k&lt;br /&gt;
 $ ./vanitygen -X 5 3R -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Novacoin&#039;&#039;&#039; (NVC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 8 4 -k&lt;br /&gt;
 $ ./vanitygen -X 8 4D -k&lt;br /&gt;
 $ ./vanitygen -X 8 4Z -k&lt;br /&gt;
 $ ./vanitygen -X 8 4a -k&lt;br /&gt;
 $ ./vanitygen -X 8 4d -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Feathercoin&#039;&#039;&#039; (FTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 14 6 -k&lt;br /&gt;
 $ ./vanitygen -X 14 6d -k&lt;br /&gt;
 $ ./vanitygen -X 14 6z -k&lt;br /&gt;
 $ ./vanitygen -X 14 7 -k&lt;br /&gt;
 $ ./vanitygen -X 14 71 -k&lt;br /&gt;
 $ ./vanitygen -X 14 72 -k&lt;br /&gt;
 $ ./vanitygen -X 14 73 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Anoncoin&#039;&#039;&#039; (ANC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 23 A -k&lt;br /&gt;
 $ ./vanitygen -X 23 AF -k&lt;br /&gt;
 $ ./vanitygen -X 23 AZ -k&lt;br /&gt;
 $ ./vanitygen -X 23 Aa -k&lt;br /&gt;
 $ ./vanitygen -X 23 Af -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Digitalcoin&#039;&#039;&#039; (DGC) or &#039;&#039;&#039;Dogecoin&#039;&#039;&#039; (DOGE) addresses:&lt;br /&gt;
 $ ./vanitygen -X 30 D -k&lt;br /&gt;
 $ ./vanitygen -X 30 D5 -k&lt;br /&gt;
 $ ./vanitygen -X 30 D9 -k&lt;br /&gt;
 $ ./vanitygen -X 30 DA -k&lt;br /&gt;
 $ ./vanitygen -X 30 DU -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Franko&#039;&#039;&#039; (FRK) addresses:&lt;br /&gt;
 $ ./vanitygen -X 35 F -k&lt;br /&gt;
 $ ./vanitygen -X 35 FD -k&lt;br /&gt;
 $ ./vanitygen -X 35 FE -k&lt;br /&gt;
 $ ./vanitygen -X 35 FN -k&lt;br /&gt;
 $ ./vanitygen -X 35 FR -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Litecoin&#039;&#039;&#039; (LTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 48 L -k&lt;br /&gt;
 $ ./vanitygen -X 48 LK -k&lt;br /&gt;
 $ ./vanitygen -X 48 LZ -k&lt;br /&gt;
 $ ./vanitygen -X 48 La -k&lt;br /&gt;
 $ ./vanitygen -X 48 Li -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Namecoin&#039;&#039;&#039; (NMC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 52 M -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mv -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mz -k&lt;br /&gt;
 $ ./vanitygen -X 52 N -k&lt;br /&gt;
 $ ./vanitygen -X 52 N1 -k&lt;br /&gt;
 $ ./vanitygen -X 52 N9 -k&lt;br /&gt;
 $ ./vanitygen -X 52 NA -k&lt;br /&gt;
 $ ./vanitygen -X 52 NK -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;PPCoin&#039;&#039;&#039; (PPC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 55 P -k&lt;br /&gt;
 $ ./vanitygen -X 55 P8 -k&lt;br /&gt;
 $ ./vanitygen -X 55 P9 -k&lt;br /&gt;
 $ ./vanitygen -X 55 PA -k&lt;br /&gt;
 $ ./vanitygen -X 55 PX -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Vertcoin&#039;&#039;&#039; (VTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 71 V -k&lt;br /&gt;
 $ ./vanitygen -X 71 VZ -k&lt;br /&gt;
 $ ./vanitygen -X 71 Va -k&lt;br /&gt;
 $ ./vanitygen -X 71 Vy -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;YaCoin&#039;&#039;&#039; (YAC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 77 X -k&lt;br /&gt;
 $ ./vanitygen -X 77 Xz -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y1 -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y9 -k&lt;br /&gt;
 $ ./vanitygen -X 77 YA -k&lt;br /&gt;
 $ ./vanitygen -X 77 YP -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;BBQcoin&#039;&#039;&#039; (BQC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 85 b -k&lt;br /&gt;
 $ ./vanitygen -X 85 bC -k&lt;br /&gt;
 $ ./vanitygen -X 85 bZ -k&lt;br /&gt;
 $ ./vanitygen -X 85 ba -k&lt;br /&gt;
 $ ./vanitygen -X 85 bc -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Ixcoin&#039;&#039;&#039; (IXC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 138 x -k&lt;br /&gt;
 $ ./vanitygen -X 138 xX -k&lt;br /&gt;
 $ ./vanitygen -X 138 xZ -k&lt;br /&gt;
 $ ./vanitygen -X 138 xa -k&lt;br /&gt;
 $ ./vanitygen -X 138 xv -k&lt;br /&gt;
&lt;br /&gt;
Generally, to find out the address format of a given crypto-coin (i.e. the number after the -X option of vanitygen) one can use this service:&lt;br /&gt;
    &amp;lt;nowiki&amp;gt;http://darkgamex.ch:2751/q/decode_address/&amp;lt;Address&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Example: Take any Litecoin address, e.g. &amp;quot;LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&amp;quot;, and submit this URL:&lt;br /&gt;
    http://darkgamex.ch:2751/q/decode_address/LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&lt;br /&gt;
The browser output will be:&lt;br /&gt;
    30:265dcf8616a9723d3b4ba35c246b041e20013597&lt;br /&gt;
The &#039;&#039;&#039;30&#039;&#039;&#039; is Litecoin&#039;s address format in hex (!), i.e. &#039;&#039;&#039;30&#039;&#039;&#039; (hex) = 48 (decimal) [because &#039;&#039;&#039;3&#039;&#039;&#039;*16 + &#039;&#039;&#039;0&#039;&#039;&#039;*1 = 48], i.e. use &#039;&#039;&#039;-X 48&#039;&#039;&#039; in vanitygen to generate Litecoin addresses.&lt;br /&gt;
&lt;br /&gt;
Some related info here: https://en.bitcoin.it/wiki/List_of_address_prefixes&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Firstbits]]&lt;br /&gt;
* [[Bitcoin Vanity Generation Website]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Vanity address]]&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=44881</id>
		<title>Vanitygen</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=44881"/>
		<updated>2014-03-10T22:19:18Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Vanity addresses for other crypto-coins */ clarified that list is in ascending order of &amp;quot;-X&amp;quot; parameter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Vanitygen&#039;&#039;&#039; is a command-line vanity bitcoin address generator.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re tired of the random, cryptic addresses generated by regular bitcoin clients, you can use vanitygen to create a more personalized address.  Add unique flair when you tell people to send bitcoins to 1stDownqyMHHqnDPRSfiZ5GXJ8Gk9dbjL or dogecoins to DMooNvsY5dJth17qop3RUUnZG3ta3MW2Ua.  Alternatively, vanitygen can be used to generate random addresses offline.&lt;br /&gt;
&lt;br /&gt;
Vanitygen accepts as input a pattern, or list of patterns to search for, and produces a list of addresses and private keys.  Vanitygen&#039;s search is probabilistic, and the amount of time required to find a given pattern depends on how complex the pattern is, the speed of your computer, and whether you get lucky.&lt;br /&gt;
&lt;br /&gt;
The example below illustrates a session of vanitygen.  It is typical, and took about 10 sec to finish, using my Core 2 Duo E6600 CPU on x86-64 Linux:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./vanitygen 1Boat&lt;br /&gt;
Difficulty: 4476342&lt;br /&gt;
Pattern: 1Boat                                                                 &lt;br /&gt;
Address: 1BoatSLRHtKNngkdXEeobR76b53LETtpyT&lt;br /&gt;
Privkey: 5J4XJRyLVgzbXEgh8VNi4qovLzxRftzMd8a18KkdXv4EqAwX3tS&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vanitygen includes components to perform address searching on your CPU (vanitygen) and your OpenCL-compatible GPU (oclvanitygen).  Both can be built from source, and both are included in the Windows binary package.  Also included is oclvanityminer, the vanity address mining client.  Oclvanityminer can be used to automatically claim bounties on sites such as [[User:ThePiachu|ThePiachu]]&#039;s [[Vanity Pool]].&lt;br /&gt;
&lt;br /&gt;
Current version: 0.22&lt;br /&gt;
&lt;br /&gt;
Windows x86+x64 binaries [https://github.com/downloads/samr7/vanitygen/vanitygen-0.20-win.zip here].  PGP signature [http://insight.gotdns.org/~samr7/vanitygen-0.20-win.zip.asc here].&lt;br /&gt;
&lt;br /&gt;
Get the source from [https://github.com/samr7/vanitygen GitHub].  Includes Makefiles for Linux and Mac OS X.&lt;br /&gt;
&lt;br /&gt;
Main discussion at [https://bitcointalk.org/index.php?topic=25804.0 BitCoinTalk]&lt;br /&gt;
&lt;br /&gt;
For AMD Catalyst 13.1+ you need to run the AMD APP SDK Runtime from Catalyst 12.10 in order to get this program to work. (So all your Catalyst drivers would be brand new except for the SDK Runtime.) This is discussed on [https://github.com/samr7/vanitygen/issues/19 GitHub]. For Linux, use AMD APP SDK 2.7.&lt;br /&gt;
&lt;br /&gt;
Also the latest source doesn&#039;t work properly for high-end AMD cards (7XXX and greater). Solution is to change line 459 in oclengine.c from: return quirks; to: return quirks &amp;amp; ~VG_OCL_AMD_BFI_INT;&lt;br /&gt;
Windows x86+x64 binaries that solve this problem plus provide support for compressed keys [https://lifeboat.com/oclvanitygen here]. PGP signature [https://lifeboat.com/oclvanitygen.zip.sig here]. If you have any problems with the binaries, join the relevant [https://bitcointalk.org/index.php?topic=301068.0 BitCoinTalk discussion].&lt;br /&gt;
&lt;br /&gt;
== Expected keysearch rate ==&lt;br /&gt;
Main article: [[Vanitygen keysearch rate]]&lt;br /&gt;
&lt;br /&gt;
What key search rate can I expect from hardware X?&lt;br /&gt;
&lt;br /&gt;
Detailed list forthcoming.  Some ballpark estimates are listed below.&lt;br /&gt;
&lt;br /&gt;
 Dual-core desktop CPUs, 32-bit mode: 100-250 Kkey/s.&lt;br /&gt;
 Dual-core desktop CPUs, 64-bit mode: 150-450 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 32-bit mode: 200-400 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 64-bit mode: 300-750 Kkey/s.&lt;br /&gt;
 NVIDIA GT200 GPUs: up to 6.5 Mkey/s&lt;br /&gt;
 AMD Radeon 58XX, 68XX GPUs: up to 23.5 Mkey/s.&lt;br /&gt;
 AMD Radeon 69XX GPUs: up to 19.5 Mkey/s.&lt;br /&gt;
&lt;br /&gt;
As vanitygen performs a lot of large integer arithmetic, running it in 64-bit mode makes a huge difference in key search rate, easily a 50% improvement over 32-bit mode.  If you are using a 64-bit edition of Windows, and not using a GPU, be sure to use vanitygen64.exe.&lt;br /&gt;
&lt;br /&gt;
Radeon 58XX outperforms Radeon 69XX by a very comfortable margin.  Oclvanitygen is sensitive to integer multiply throughput, and Radeon 58XX can multiply concurrently with other operations.  At similar clocks, a hobbled Radeon 5830 will outperform a Radeon 6970.&lt;br /&gt;
&lt;br /&gt;
In custom builds, CPU performance will be less than expected if the OpenSSL library is an older version (&amp;lt;1.0.0d) or is not built with the appropriate optimizations enabled.&lt;br /&gt;
&lt;br /&gt;
== Vanity addresses for other crypto-coins ==&lt;br /&gt;
While all &amp;quot;normal&amp;quot; bitcoin addresses start with a &amp;quot;1&amp;quot; (one) (except multi-signature addresses that start with &amp;quot;3&amp;quot;), some other crypto-coins use different address name spaces. Vanitygen (as of version 0.22) can be used to produce vanity addresses for these crypto coins as well (but not for [http://bitmessage.org bitmessage] addresses), by using the &amp;quot;-X&amp;quot; option. The following list provides some example command line calls and also indicates the address range for the respective coin (in ascending order of the &amp;quot;-X&amp;quot; parameter):&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC), &#039;&#039;&#039;Devcoin&#039;&#039;&#039; (DVC), &#039;&#039;&#039;Freicoin&#039;&#039;&#039; (FRC), &#039;&#039;&#039;Terracoin&#039;&#039;&#039; (TRC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 0 1 -k&lt;br /&gt;
or simply just&lt;br /&gt;
 $ ./vanitygen 1 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC) etc. &#039;&#039;&#039;multi-signature&#039;&#039;&#039; addresses:&lt;br /&gt;
 $ ./vanitygen -X 5 3 -k&lt;br /&gt;
 $ ./vanitygen -X 5 31 -k&lt;br /&gt;
 $ ./vanitygen -X 5 39 -k&lt;br /&gt;
 $ ./vanitygen -X 5 3A -k&lt;br /&gt;
 $ ./vanitygen -X 5 3R -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Novacoin&#039;&#039;&#039; (NVC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 8 4 -k&lt;br /&gt;
 $ ./vanitygen -X 8 4D -k&lt;br /&gt;
 $ ./vanitygen -X 8 4Z -k&lt;br /&gt;
 $ ./vanitygen -X 8 4a -k&lt;br /&gt;
 $ ./vanitygen -X 8 4d -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Feathercoin&#039;&#039;&#039; (FTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 14 6 -k&lt;br /&gt;
 $ ./vanitygen -X 14 6d -k&lt;br /&gt;
 $ ./vanitygen -X 14 6z -k&lt;br /&gt;
 $ ./vanitygen -X 14 7 -k&lt;br /&gt;
 $ ./vanitygen -X 14 71 -k&lt;br /&gt;
 $ ./vanitygen -X 14 72 -k&lt;br /&gt;
 $ ./vanitygen -X 14 73 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Anoncoin&#039;&#039;&#039; (ANC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 23 A -k&lt;br /&gt;
 $ ./vanitygen -X 23 AF -k&lt;br /&gt;
 $ ./vanitygen -X 23 AZ -k&lt;br /&gt;
 $ ./vanitygen -X 23 Aa -k&lt;br /&gt;
 $ ./vanitygen -X 23 Af -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Digitalcoin&#039;&#039;&#039; (DGC) or &#039;&#039;&#039;Dogecoin&#039;&#039;&#039; (DOGE) addresses:&lt;br /&gt;
 $ ./vanitygen -X 30 D -k&lt;br /&gt;
 $ ./vanitygen -X 30 D5 -k&lt;br /&gt;
 $ ./vanitygen -X 30 D9 -k&lt;br /&gt;
 $ ./vanitygen -X 30 DA -k&lt;br /&gt;
 $ ./vanitygen -X 30 DU -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Franko&#039;&#039;&#039; (FRK) addresses:&lt;br /&gt;
 $ ./vanitygen -X 35 F -k&lt;br /&gt;
 $ ./vanitygen -X 35 FD -k&lt;br /&gt;
 $ ./vanitygen -X 35 FE -k&lt;br /&gt;
 $ ./vanitygen -X 35 FN -k&lt;br /&gt;
 $ ./vanitygen -X 35 FR -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Litecoin&#039;&#039;&#039; (LTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 48 L -k&lt;br /&gt;
 $ ./vanitygen -X 48 LK -k&lt;br /&gt;
 $ ./vanitygen -X 48 LZ -k&lt;br /&gt;
 $ ./vanitygen -X 48 La -k&lt;br /&gt;
 $ ./vanitygen -X 48 Li -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Namecoin&#039;&#039;&#039; (NMC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 52 M -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mv -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mz -k&lt;br /&gt;
 $ ./vanitygen -X 52 N -k&lt;br /&gt;
 $ ./vanitygen -X 52 N1 -k&lt;br /&gt;
 $ ./vanitygen -X 52 N9 -k&lt;br /&gt;
 $ ./vanitygen -X 52 NA -k&lt;br /&gt;
 $ ./vanitygen -X 52 NK -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;PPCoin&#039;&#039;&#039; (PPC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 55 P -k&lt;br /&gt;
 $ ./vanitygen -X 55 P8 -k&lt;br /&gt;
 $ ./vanitygen -X 55 P9 -k&lt;br /&gt;
 $ ./vanitygen -X 55 PA -k&lt;br /&gt;
 $ ./vanitygen -X 55 PX -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;YaCoin&#039;&#039;&#039; (YAC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 77 X -k&lt;br /&gt;
 $ ./vanitygen -X 77 Xz -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y1 -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y9 -k&lt;br /&gt;
 $ ./vanitygen -X 77 YA -k&lt;br /&gt;
 $ ./vanitygen -X 77 YP -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;BBQcoin&#039;&#039;&#039; (BQC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 85 b -k&lt;br /&gt;
 $ ./vanitygen -X 85 bC -k&lt;br /&gt;
 $ ./vanitygen -X 85 bZ -k&lt;br /&gt;
 $ ./vanitygen -X 85 ba -k&lt;br /&gt;
 $ ./vanitygen -X 85 bc -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Ixcoin&#039;&#039;&#039; (IXC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 138 x -k&lt;br /&gt;
 $ ./vanitygen -X 138 xX -k&lt;br /&gt;
 $ ./vanitygen -X 138 xZ -k&lt;br /&gt;
 $ ./vanitygen -X 138 xa -k&lt;br /&gt;
 $ ./vanitygen -X 138 xv -k&lt;br /&gt;
&lt;br /&gt;
Generally, to find out the address format of a given crypto-coin (i.e. the number after the -X option of vanitygen) one can use this service:&lt;br /&gt;
    &amp;lt;nowiki&amp;gt;http://darkgamex.ch:2751/q/decode_address/&amp;lt;Address&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Example: Take any Litecoin address, e.g. &amp;quot;LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&amp;quot;, and submit this URL:&lt;br /&gt;
    http://darkgamex.ch:2751/q/decode_address/LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&lt;br /&gt;
The browser output will be:&lt;br /&gt;
    30:265dcf8616a9723d3b4ba35c246b041e20013597&lt;br /&gt;
The &#039;&#039;&#039;30&#039;&#039;&#039; is Litecoin&#039;s address format in hex (!), i.e. &#039;&#039;&#039;30&#039;&#039;&#039; (hex) = 48 (decimal) [because &#039;&#039;&#039;3&#039;&#039;&#039;*16 + &#039;&#039;&#039;0&#039;&#039;&#039;*1 = 48], i.e. use &#039;&#039;&#039;-X 48&#039;&#039;&#039; in vanitygen to generate Litecoin addresses.&lt;br /&gt;
&lt;br /&gt;
Some related info here: https://en.bitcoin.it/wiki/List_of_address_prefixes&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Firstbits]]&lt;br /&gt;
* [[Bitcoin Vanity Generation Website]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Vanity address]]&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=44880</id>
		<title>Vanitygen</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=44880"/>
		<updated>2014-03-10T22:18:13Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Vanity addresses for other crypto-coins */ Removed redundant Dogecoin Entry and used correct order for Franko and Dogecoin&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Vanitygen&#039;&#039;&#039; is a command-line vanity bitcoin address generator.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re tired of the random, cryptic addresses generated by regular bitcoin clients, you can use vanitygen to create a more personalized address.  Add unique flair when you tell people to send bitcoins to 1stDownqyMHHqnDPRSfiZ5GXJ8Gk9dbjL or dogecoins to DMooNvsY5dJth17qop3RUUnZG3ta3MW2Ua.  Alternatively, vanitygen can be used to generate random addresses offline.&lt;br /&gt;
&lt;br /&gt;
Vanitygen accepts as input a pattern, or list of patterns to search for, and produces a list of addresses and private keys.  Vanitygen&#039;s search is probabilistic, and the amount of time required to find a given pattern depends on how complex the pattern is, the speed of your computer, and whether you get lucky.&lt;br /&gt;
&lt;br /&gt;
The example below illustrates a session of vanitygen.  It is typical, and took about 10 sec to finish, using my Core 2 Duo E6600 CPU on x86-64 Linux:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./vanitygen 1Boat&lt;br /&gt;
Difficulty: 4476342&lt;br /&gt;
Pattern: 1Boat                                                                 &lt;br /&gt;
Address: 1BoatSLRHtKNngkdXEeobR76b53LETtpyT&lt;br /&gt;
Privkey: 5J4XJRyLVgzbXEgh8VNi4qovLzxRftzMd8a18KkdXv4EqAwX3tS&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vanitygen includes components to perform address searching on your CPU (vanitygen) and your OpenCL-compatible GPU (oclvanitygen).  Both can be built from source, and both are included in the Windows binary package.  Also included is oclvanityminer, the vanity address mining client.  Oclvanityminer can be used to automatically claim bounties on sites such as [[User:ThePiachu|ThePiachu]]&#039;s [[Vanity Pool]].&lt;br /&gt;
&lt;br /&gt;
Current version: 0.22&lt;br /&gt;
&lt;br /&gt;
Windows x86+x64 binaries [https://github.com/downloads/samr7/vanitygen/vanitygen-0.20-win.zip here].  PGP signature [http://insight.gotdns.org/~samr7/vanitygen-0.20-win.zip.asc here].&lt;br /&gt;
&lt;br /&gt;
Get the source from [https://github.com/samr7/vanitygen GitHub].  Includes Makefiles for Linux and Mac OS X.&lt;br /&gt;
&lt;br /&gt;
Main discussion at [https://bitcointalk.org/index.php?topic=25804.0 BitCoinTalk]&lt;br /&gt;
&lt;br /&gt;
For AMD Catalyst 13.1+ you need to run the AMD APP SDK Runtime from Catalyst 12.10 in order to get this program to work. (So all your Catalyst drivers would be brand new except for the SDK Runtime.) This is discussed on [https://github.com/samr7/vanitygen/issues/19 GitHub]. For Linux, use AMD APP SDK 2.7.&lt;br /&gt;
&lt;br /&gt;
Also the latest source doesn&#039;t work properly for high-end AMD cards (7XXX and greater). Solution is to change line 459 in oclengine.c from: return quirks; to: return quirks &amp;amp; ~VG_OCL_AMD_BFI_INT;&lt;br /&gt;
Windows x86+x64 binaries that solve this problem plus provide support for compressed keys [https://lifeboat.com/oclvanitygen here]. PGP signature [https://lifeboat.com/oclvanitygen.zip.sig here]. If you have any problems with the binaries, join the relevant [https://bitcointalk.org/index.php?topic=301068.0 BitCoinTalk discussion].&lt;br /&gt;
&lt;br /&gt;
== Expected keysearch rate ==&lt;br /&gt;
Main article: [[Vanitygen keysearch rate]]&lt;br /&gt;
&lt;br /&gt;
What key search rate can I expect from hardware X?&lt;br /&gt;
&lt;br /&gt;
Detailed list forthcoming.  Some ballpark estimates are listed below.&lt;br /&gt;
&lt;br /&gt;
 Dual-core desktop CPUs, 32-bit mode: 100-250 Kkey/s.&lt;br /&gt;
 Dual-core desktop CPUs, 64-bit mode: 150-450 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 32-bit mode: 200-400 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 64-bit mode: 300-750 Kkey/s.&lt;br /&gt;
 NVIDIA GT200 GPUs: up to 6.5 Mkey/s&lt;br /&gt;
 AMD Radeon 58XX, 68XX GPUs: up to 23.5 Mkey/s.&lt;br /&gt;
 AMD Radeon 69XX GPUs: up to 19.5 Mkey/s.&lt;br /&gt;
&lt;br /&gt;
As vanitygen performs a lot of large integer arithmetic, running it in 64-bit mode makes a huge difference in key search rate, easily a 50% improvement over 32-bit mode.  If you are using a 64-bit edition of Windows, and not using a GPU, be sure to use vanitygen64.exe.&lt;br /&gt;
&lt;br /&gt;
Radeon 58XX outperforms Radeon 69XX by a very comfortable margin.  Oclvanitygen is sensitive to integer multiply throughput, and Radeon 58XX can multiply concurrently with other operations.  At similar clocks, a hobbled Radeon 5830 will outperform a Radeon 6970.&lt;br /&gt;
&lt;br /&gt;
In custom builds, CPU performance will be less than expected if the OpenSSL library is an older version (&amp;lt;1.0.0d) or is not built with the appropriate optimizations enabled.&lt;br /&gt;
&lt;br /&gt;
== Vanity addresses for other crypto-coins ==&lt;br /&gt;
While all &amp;quot;normal&amp;quot; bitcoin addresses start with a &amp;quot;1&amp;quot; (one) (except multi-signature addresses that start with &amp;quot;3&amp;quot;), some other crypto-coins use different address name spaces. Vanitygen (as of version 0.22) can be used to produce vanity addresses for these crypto coins as well (but not for [http://bitmessage.org bitmessage] addresses), by using the &amp;quot;-X&amp;quot; option. The following list provides some example command line calls and also indicates the address range for the respective coin:&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC), &#039;&#039;&#039;Devcoin&#039;&#039;&#039; (DVC), &#039;&#039;&#039;Freicoin&#039;&#039;&#039; (FRC), &#039;&#039;&#039;Terracoin&#039;&#039;&#039; (TRC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 0 1 -k&lt;br /&gt;
or simply just&lt;br /&gt;
 $ ./vanitygen 1 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC) etc. &#039;&#039;&#039;multi-signature&#039;&#039;&#039; addresses:&lt;br /&gt;
 $ ./vanitygen -X 5 3 -k&lt;br /&gt;
 $ ./vanitygen -X 5 31 -k&lt;br /&gt;
 $ ./vanitygen -X 5 39 -k&lt;br /&gt;
 $ ./vanitygen -X 5 3A -k&lt;br /&gt;
 $ ./vanitygen -X 5 3R -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Novacoin&#039;&#039;&#039; (NVC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 8 4 -k&lt;br /&gt;
 $ ./vanitygen -X 8 4D -k&lt;br /&gt;
 $ ./vanitygen -X 8 4Z -k&lt;br /&gt;
 $ ./vanitygen -X 8 4a -k&lt;br /&gt;
 $ ./vanitygen -X 8 4d -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Feathercoin&#039;&#039;&#039; (FTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 14 6 -k&lt;br /&gt;
 $ ./vanitygen -X 14 6d -k&lt;br /&gt;
 $ ./vanitygen -X 14 6z -k&lt;br /&gt;
 $ ./vanitygen -X 14 7 -k&lt;br /&gt;
 $ ./vanitygen -X 14 71 -k&lt;br /&gt;
 $ ./vanitygen -X 14 72 -k&lt;br /&gt;
 $ ./vanitygen -X 14 73 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Anoncoin&#039;&#039;&#039; (ANC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 23 A -k&lt;br /&gt;
 $ ./vanitygen -X 23 AF -k&lt;br /&gt;
 $ ./vanitygen -X 23 AZ -k&lt;br /&gt;
 $ ./vanitygen -X 23 Aa -k&lt;br /&gt;
 $ ./vanitygen -X 23 Af -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Digitalcoin&#039;&#039;&#039; (DGC) or &#039;&#039;&#039;Dogecoin&#039;&#039;&#039; (DOGE) addresses:&lt;br /&gt;
 $ ./vanitygen -X 30 D -k&lt;br /&gt;
 $ ./vanitygen -X 30 D5 -k&lt;br /&gt;
 $ ./vanitygen -X 30 D9 -k&lt;br /&gt;
 $ ./vanitygen -X 30 DA -k&lt;br /&gt;
 $ ./vanitygen -X 30 DU -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Franko&#039;&#039;&#039; (FRK) addresses:&lt;br /&gt;
 $ ./vanitygen -X 35 F -k&lt;br /&gt;
 $ ./vanitygen -X 35 FD -k&lt;br /&gt;
 $ ./vanitygen -X 35 FE -k&lt;br /&gt;
 $ ./vanitygen -X 35 FN -k&lt;br /&gt;
 $ ./vanitygen -X 35 FR -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Litecoin&#039;&#039;&#039; (LTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 48 L -k&lt;br /&gt;
 $ ./vanitygen -X 48 LK -k&lt;br /&gt;
 $ ./vanitygen -X 48 LZ -k&lt;br /&gt;
 $ ./vanitygen -X 48 La -k&lt;br /&gt;
 $ ./vanitygen -X 48 Li -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Namecoin&#039;&#039;&#039; (NMC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 52 M -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mv -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mz -k&lt;br /&gt;
 $ ./vanitygen -X 52 N -k&lt;br /&gt;
 $ ./vanitygen -X 52 N1 -k&lt;br /&gt;
 $ ./vanitygen -X 52 N9 -k&lt;br /&gt;
 $ ./vanitygen -X 52 NA -k&lt;br /&gt;
 $ ./vanitygen -X 52 NK -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;PPCoin&#039;&#039;&#039; (PPC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 55 P -k&lt;br /&gt;
 $ ./vanitygen -X 55 P8 -k&lt;br /&gt;
 $ ./vanitygen -X 55 P9 -k&lt;br /&gt;
 $ ./vanitygen -X 55 PA -k&lt;br /&gt;
 $ ./vanitygen -X 55 PX -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;YaCoin&#039;&#039;&#039; (YAC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 77 X -k&lt;br /&gt;
 $ ./vanitygen -X 77 Xz -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y1 -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y9 -k&lt;br /&gt;
 $ ./vanitygen -X 77 YA -k&lt;br /&gt;
 $ ./vanitygen -X 77 YP -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;BBQcoin&#039;&#039;&#039; (BQC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 85 b -k&lt;br /&gt;
 $ ./vanitygen -X 85 bC -k&lt;br /&gt;
 $ ./vanitygen -X 85 bZ -k&lt;br /&gt;
 $ ./vanitygen -X 85 ba -k&lt;br /&gt;
 $ ./vanitygen -X 85 bc -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Ixcoin&#039;&#039;&#039; (IXC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 138 x -k&lt;br /&gt;
 $ ./vanitygen -X 138 xX -k&lt;br /&gt;
 $ ./vanitygen -X 138 xZ -k&lt;br /&gt;
 $ ./vanitygen -X 138 xa -k&lt;br /&gt;
 $ ./vanitygen -X 138 xv -k&lt;br /&gt;
&lt;br /&gt;
Generally, to find out the address format of a given crypto-coin (i.e. the number after the -X option of vanitygen) one can use this service:&lt;br /&gt;
    &amp;lt;nowiki&amp;gt;http://darkgamex.ch:2751/q/decode_address/&amp;lt;Address&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Example: Take any Litecoin address, e.g. &amp;quot;LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&amp;quot;, and submit this URL:&lt;br /&gt;
    http://darkgamex.ch:2751/q/decode_address/LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&lt;br /&gt;
The browser output will be:&lt;br /&gt;
    30:265dcf8616a9723d3b4ba35c246b041e20013597&lt;br /&gt;
The &#039;&#039;&#039;30&#039;&#039;&#039; is Litecoin&#039;s address format in hex (!), i.e. &#039;&#039;&#039;30&#039;&#039;&#039; (hex) = 48 (decimal) [because &#039;&#039;&#039;3&#039;&#039;&#039;*16 + &#039;&#039;&#039;0&#039;&#039;&#039;*1 = 48], i.e. use &#039;&#039;&#039;-X 48&#039;&#039;&#039; in vanitygen to generate Litecoin addresses.&lt;br /&gt;
&lt;br /&gt;
Some related info here: https://en.bitcoin.it/wiki/List_of_address_prefixes&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Firstbits]]&lt;br /&gt;
* [[Bitcoin Vanity Generation Website]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Vanity address]]&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=44879</id>
		<title>Vanitygen</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=44879"/>
		<updated>2014-03-10T22:16:08Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Vanity addresses for other crypto-coins */ Error Correction: Dogecoin Addresses do not start with a &amp;quot;One&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Vanitygen&#039;&#039;&#039; is a command-line vanity bitcoin address generator.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re tired of the random, cryptic addresses generated by regular bitcoin clients, you can use vanitygen to create a more personalized address.  Add unique flair when you tell people to send bitcoins to 1stDownqyMHHqnDPRSfiZ5GXJ8Gk9dbjL or dogecoins to DMooNvsY5dJth17qop3RUUnZG3ta3MW2Ua.  Alternatively, vanitygen can be used to generate random addresses offline.&lt;br /&gt;
&lt;br /&gt;
Vanitygen accepts as input a pattern, or list of patterns to search for, and produces a list of addresses and private keys.  Vanitygen&#039;s search is probabilistic, and the amount of time required to find a given pattern depends on how complex the pattern is, the speed of your computer, and whether you get lucky.&lt;br /&gt;
&lt;br /&gt;
The example below illustrates a session of vanitygen.  It is typical, and took about 10 sec to finish, using my Core 2 Duo E6600 CPU on x86-64 Linux:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./vanitygen 1Boat&lt;br /&gt;
Difficulty: 4476342&lt;br /&gt;
Pattern: 1Boat                                                                 &lt;br /&gt;
Address: 1BoatSLRHtKNngkdXEeobR76b53LETtpyT&lt;br /&gt;
Privkey: 5J4XJRyLVgzbXEgh8VNi4qovLzxRftzMd8a18KkdXv4EqAwX3tS&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vanitygen includes components to perform address searching on your CPU (vanitygen) and your OpenCL-compatible GPU (oclvanitygen).  Both can be built from source, and both are included in the Windows binary package.  Also included is oclvanityminer, the vanity address mining client.  Oclvanityminer can be used to automatically claim bounties on sites such as [[User:ThePiachu|ThePiachu]]&#039;s [[Vanity Pool]].&lt;br /&gt;
&lt;br /&gt;
Current version: 0.22&lt;br /&gt;
&lt;br /&gt;
Windows x86+x64 binaries [https://github.com/downloads/samr7/vanitygen/vanitygen-0.20-win.zip here].  PGP signature [http://insight.gotdns.org/~samr7/vanitygen-0.20-win.zip.asc here].&lt;br /&gt;
&lt;br /&gt;
Get the source from [https://github.com/samr7/vanitygen GitHub].  Includes Makefiles for Linux and Mac OS X.&lt;br /&gt;
&lt;br /&gt;
Main discussion at [https://bitcointalk.org/index.php?topic=25804.0 BitCoinTalk]&lt;br /&gt;
&lt;br /&gt;
For AMD Catalyst 13.1+ you need to run the AMD APP SDK Runtime from Catalyst 12.10 in order to get this program to work. (So all your Catalyst drivers would be brand new except for the SDK Runtime.) This is discussed on [https://github.com/samr7/vanitygen/issues/19 GitHub]. For Linux, use AMD APP SDK 2.7.&lt;br /&gt;
&lt;br /&gt;
Also the latest source doesn&#039;t work properly for high-end AMD cards (7XXX and greater). Solution is to change line 459 in oclengine.c from: return quirks; to: return quirks &amp;amp; ~VG_OCL_AMD_BFI_INT;&lt;br /&gt;
Windows x86+x64 binaries that solve this problem plus provide support for compressed keys [https://lifeboat.com/oclvanitygen here]. PGP signature [https://lifeboat.com/oclvanitygen.zip.sig here]. If you have any problems with the binaries, join the relevant [https://bitcointalk.org/index.php?topic=301068.0 BitCoinTalk discussion].&lt;br /&gt;
&lt;br /&gt;
== Expected keysearch rate ==&lt;br /&gt;
Main article: [[Vanitygen keysearch rate]]&lt;br /&gt;
&lt;br /&gt;
What key search rate can I expect from hardware X?&lt;br /&gt;
&lt;br /&gt;
Detailed list forthcoming.  Some ballpark estimates are listed below.&lt;br /&gt;
&lt;br /&gt;
 Dual-core desktop CPUs, 32-bit mode: 100-250 Kkey/s.&lt;br /&gt;
 Dual-core desktop CPUs, 64-bit mode: 150-450 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 32-bit mode: 200-400 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 64-bit mode: 300-750 Kkey/s.&lt;br /&gt;
 NVIDIA GT200 GPUs: up to 6.5 Mkey/s&lt;br /&gt;
 AMD Radeon 58XX, 68XX GPUs: up to 23.5 Mkey/s.&lt;br /&gt;
 AMD Radeon 69XX GPUs: up to 19.5 Mkey/s.&lt;br /&gt;
&lt;br /&gt;
As vanitygen performs a lot of large integer arithmetic, running it in 64-bit mode makes a huge difference in key search rate, easily a 50% improvement over 32-bit mode.  If you are using a 64-bit edition of Windows, and not using a GPU, be sure to use vanitygen64.exe.&lt;br /&gt;
&lt;br /&gt;
Radeon 58XX outperforms Radeon 69XX by a very comfortable margin.  Oclvanitygen is sensitive to integer multiply throughput, and Radeon 58XX can multiply concurrently with other operations.  At similar clocks, a hobbled Radeon 5830 will outperform a Radeon 6970.&lt;br /&gt;
&lt;br /&gt;
In custom builds, CPU performance will be less than expected if the OpenSSL library is an older version (&amp;lt;1.0.0d) or is not built with the appropriate optimizations enabled.&lt;br /&gt;
&lt;br /&gt;
== Vanity addresses for other crypto-coins ==&lt;br /&gt;
While all &amp;quot;normal&amp;quot; bitcoin addresses start with a &amp;quot;1&amp;quot; (one) (except multi-signature addresses that start with &amp;quot;3&amp;quot;), some other crypto-coins use different address name spaces. Vanitygen (as of version 0.22) can be used to produce vanity addresses for these crypto coins as well (but not for [http://bitmessage.org bitmessage] addresses), by using the &amp;quot;-X&amp;quot; option. The following list provides some example command line calls and also indicates the address range for the respective coin:&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC), &#039;&#039;&#039;Devcoin&#039;&#039;&#039; (DVC), &#039;&#039;&#039;Freicoin&#039;&#039;&#039; (FRC), &#039;&#039;&#039;Terracoin&#039;&#039;&#039; (TRC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 0 1 -k&lt;br /&gt;
or simply just&lt;br /&gt;
 $ ./vanitygen 1 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC) etc. &#039;&#039;&#039;multi-signature&#039;&#039;&#039; addresses:&lt;br /&gt;
 $ ./vanitygen -X 5 3 -k&lt;br /&gt;
 $ ./vanitygen -X 5 31 -k&lt;br /&gt;
 $ ./vanitygen -X 5 39 -k&lt;br /&gt;
 $ ./vanitygen -X 5 3A -k&lt;br /&gt;
 $ ./vanitygen -X 5 3R -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Dogecoin&#039;&#039;&#039; (DOGE) addresses:&lt;br /&gt;
 $ ./vanitygen -X 30 D -k&lt;br /&gt;
 $ ./vanitygen -X 30 DMooN -k&lt;br /&gt;
 $ ./vanitygen -X 30 DMUcH -k&lt;br /&gt;
 $ ./vanitygen -X 30 DMANy -k&lt;br /&gt;
 $ ./vanitygen -X 30 DSHibE -k&lt;br /&gt;
 (Unfortunately, &amp;quot;Dwow&amp;quot; is not possible).&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Novacoin&#039;&#039;&#039; (NVC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 8 4 -k&lt;br /&gt;
 $ ./vanitygen -X 8 4D -k&lt;br /&gt;
 $ ./vanitygen -X 8 4Z -k&lt;br /&gt;
 $ ./vanitygen -X 8 4a -k&lt;br /&gt;
 $ ./vanitygen -X 8 4d -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Feathercoin&#039;&#039;&#039; (FTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 14 6 -k&lt;br /&gt;
 $ ./vanitygen -X 14 6d -k&lt;br /&gt;
 $ ./vanitygen -X 14 6z -k&lt;br /&gt;
 $ ./vanitygen -X 14 7 -k&lt;br /&gt;
 $ ./vanitygen -X 14 71 -k&lt;br /&gt;
 $ ./vanitygen -X 14 72 -k&lt;br /&gt;
 $ ./vanitygen -X 14 73 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Anoncoin&#039;&#039;&#039; (ANC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 23 A -k&lt;br /&gt;
 $ ./vanitygen -X 23 AF -k&lt;br /&gt;
 $ ./vanitygen -X 23 AZ -k&lt;br /&gt;
 $ ./vanitygen -X 23 Aa -k&lt;br /&gt;
 $ ./vanitygen -X 23 Af -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Franko&#039;&#039;&#039; (FRK) addresses:&lt;br /&gt;
 $ ./vanitygen -X 35 F -k&lt;br /&gt;
 $ ./vanitygen -X 35 FD -k&lt;br /&gt;
 $ ./vanitygen -X 35 FE -k&lt;br /&gt;
 $ ./vanitygen -X 35 FN -k&lt;br /&gt;
 $ ./vanitygen -X 35 FR -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Digitalcoin&#039;&#039;&#039; (DGC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 30 D -k&lt;br /&gt;
 $ ./vanitygen -X 30 D5 -k&lt;br /&gt;
 $ ./vanitygen -X 30 D9 -k&lt;br /&gt;
 $ ./vanitygen -X 30 DA -k&lt;br /&gt;
 $ ./vanitygen -X 30 DU -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Litecoin&#039;&#039;&#039; (LTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 48 L -k&lt;br /&gt;
 $ ./vanitygen -X 48 LK -k&lt;br /&gt;
 $ ./vanitygen -X 48 LZ -k&lt;br /&gt;
 $ ./vanitygen -X 48 La -k&lt;br /&gt;
 $ ./vanitygen -X 48 Li -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Namecoin&#039;&#039;&#039; (NMC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 52 M -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mv -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mz -k&lt;br /&gt;
 $ ./vanitygen -X 52 N -k&lt;br /&gt;
 $ ./vanitygen -X 52 N1 -k&lt;br /&gt;
 $ ./vanitygen -X 52 N9 -k&lt;br /&gt;
 $ ./vanitygen -X 52 NA -k&lt;br /&gt;
 $ ./vanitygen -X 52 NK -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;PPCoin&#039;&#039;&#039; (PPC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 55 P -k&lt;br /&gt;
 $ ./vanitygen -X 55 P8 -k&lt;br /&gt;
 $ ./vanitygen -X 55 P9 -k&lt;br /&gt;
 $ ./vanitygen -X 55 PA -k&lt;br /&gt;
 $ ./vanitygen -X 55 PX -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;YaCoin&#039;&#039;&#039; (YAC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 77 X -k&lt;br /&gt;
 $ ./vanitygen -X 77 Xz -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y1 -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y9 -k&lt;br /&gt;
 $ ./vanitygen -X 77 YA -k&lt;br /&gt;
 $ ./vanitygen -X 77 YP -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;BBQcoin&#039;&#039;&#039; (BQC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 85 b -k&lt;br /&gt;
 $ ./vanitygen -X 85 bC -k&lt;br /&gt;
 $ ./vanitygen -X 85 bZ -k&lt;br /&gt;
 $ ./vanitygen -X 85 ba -k&lt;br /&gt;
 $ ./vanitygen -X 85 bc -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Ixcoin&#039;&#039;&#039; (IXC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 138 x -k&lt;br /&gt;
 $ ./vanitygen -X 138 xX -k&lt;br /&gt;
 $ ./vanitygen -X 138 xZ -k&lt;br /&gt;
 $ ./vanitygen -X 138 xa -k&lt;br /&gt;
 $ ./vanitygen -X 138 xv -k&lt;br /&gt;
&lt;br /&gt;
Generally, to find out the address format of a given crypto-coin (i.e. the number after the -X option of vanitygen) one can use this service:&lt;br /&gt;
    &amp;lt;nowiki&amp;gt;http://darkgamex.ch:2751/q/decode_address/&amp;lt;Address&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Example: Take any Litecoin address, e.g. &amp;quot;LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&amp;quot;, and submit this URL:&lt;br /&gt;
    http://darkgamex.ch:2751/q/decode_address/LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&lt;br /&gt;
The browser output will be:&lt;br /&gt;
    30:265dcf8616a9723d3b4ba35c246b041e20013597&lt;br /&gt;
The &#039;&#039;&#039;30&#039;&#039;&#039; is Litecoin&#039;s address format in hex (!), i.e. &#039;&#039;&#039;30&#039;&#039;&#039; (hex) = 48 (decimal) [because &#039;&#039;&#039;3&#039;&#039;&#039;*16 + &#039;&#039;&#039;0&#039;&#039;&#039;*1 = 48], i.e. use &#039;&#039;&#039;-X 48&#039;&#039;&#039; in vanitygen to generate Litecoin addresses.&lt;br /&gt;
&lt;br /&gt;
Some related info here: https://en.bitcoin.it/wiki/List_of_address_prefixes&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Firstbits]]&lt;br /&gt;
* [[Bitcoin Vanity Generation Website]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Vanity address]]&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=43244</id>
		<title>Vanitygen</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=43244"/>
		<updated>2013-12-17T17:19:20Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Vanity addresses for other crypto-coins */ typo, and added a remark for dummies for hex-&amp;gt;dec conversion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vanitygen is a command-line vanity bitcoin address generator.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re tired of the random, cryptic addresses generated by regular bitcoin clients, you can use vanitygen to create a more personalized address.  Add unique flair when you tell people to send bitcoins to 1stDownqyMHHqnDPRSfiZ5GXJ8Gk9dbjL.  Alternatively, vanitygen can be used to generate random addresses offline.&lt;br /&gt;
&lt;br /&gt;
Vanitygen accepts as input a pattern, or list of patterns to search for, and produces a list of addresses and private keys.  Vanitygen&#039;s search is probabilistic, and the amount of time required to find a given pattern depends on how complex the pattern is, the speed of your computer, and whether you get lucky.&lt;br /&gt;
&lt;br /&gt;
The example below illustrates a session of vanitygen.  It is typical, and took about 10 sec to finish, using my Core 2 Duo E6600 CPU on x86-64 Linux:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./vanitygen 1Boat&lt;br /&gt;
Difficulty: 4476342&lt;br /&gt;
Pattern: 1Boat                                                                 &lt;br /&gt;
Address: 1BoatSLRHtKNngkdXEeobR76b53LETtpyT&lt;br /&gt;
Privkey: 5J4XJRyLVgzbXEgh8VNi4qovLzxRftzMd8a18KkdXv4EqAwX3tS&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vanitygen includes components to perform address searching on your CPU (vanitygen) and your OpenCL-compatible GPU (oclvanitygen).  Both can be built from source, and both are included in the Windows binary package.  Also included is oclvanityminer, the vanity address mining client.  Oclvanityminer can be used to automatically claim bounties on sites such as [[User:ThePiachu|ThePiachu]]&#039;s [[Vanity Pool]].&lt;br /&gt;
&lt;br /&gt;
Current version: 0.22&lt;br /&gt;
&lt;br /&gt;
Windows x86+x64 binaries [https://github.com/downloads/samr7/vanitygen/vanitygen-0.20-win.zip here].  PGP signature [http://insight.gotdns.org/~samr7/vanitygen-0.20-win.zip.asc here].&lt;br /&gt;
&lt;br /&gt;
Get the source from [https://github.com/samr7/vanitygen GitHub].  Includes Makefiles for Linux and Mac OS X.&lt;br /&gt;
&lt;br /&gt;
Main discussion at [https://bitcointalk.org/index.php?topic=25804.0 BitCoinTalk]&lt;br /&gt;
&lt;br /&gt;
For AMD Catalyst 13.1+ you need to run the AMD APP SDK Runtime from Catalyst 12.10 in order to get this program to work. (So all your Catalyst drivers would be brand new except for the SDK Runtime.) This is discussed on [https://github.com/samr7/vanitygen/issues/19 GitHub]. For Linux, use AMD APP SDK 2.7.&lt;br /&gt;
&lt;br /&gt;
Also the latest source doesn&#039;t work properly for high-end AMD cards (7XXX and greater). Solution is to change line 459 in oclengine.c from: return quirks; to: return quirks &amp;amp; ~VG_OCL_AMD_BFI_INT;&lt;br /&gt;
Windows x86+x64 binaries that solve this problem plus provide support for compressed keys [https://lifeboat.com/oclvanitygen here]. PGP signature [https://lifeboat.com/oclvanitygen.zip.sig here]. If you have any problems with the binaries, join the relevant [https://bitcointalk.org/index.php?topic=301068.0 BitCoinTalk discussion].&lt;br /&gt;
&lt;br /&gt;
== Expected keysearch rate ==&lt;br /&gt;
Main article: [[Vanitygen keysearch rate]]&lt;br /&gt;
&lt;br /&gt;
What key search rate can I expect from hardware X?&lt;br /&gt;
&lt;br /&gt;
Detailed list forthcoming.  Some ballpark estimates are listed below.&lt;br /&gt;
&lt;br /&gt;
 Dual-core desktop CPUs, 32-bit mode: 100-250 Kkey/s.&lt;br /&gt;
 Dual-core desktop CPUs, 64-bit mode: 150-450 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 32-bit mode: 200-400 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 64-bit mode: 300-750 Kkey/s.&lt;br /&gt;
 NVIDIA GT200 GPUs: up to 6.5 Mkey/s&lt;br /&gt;
 AMD Radeon 58XX, 68XX GPUs: up to 23.5 Mkey/s.&lt;br /&gt;
 AMD Radeon 69XX GPUs: up to 19.5 Mkey/s.&lt;br /&gt;
&lt;br /&gt;
As vanitygen performs a lot of large integer arithmetic, running it in 64-bit mode makes a huge difference in key search rate, easily a 50% improvement over 32-bit mode.  If you are using a 64-bit edition of Windows, and not using a GPU, be sure to use vanitygen64.exe.&lt;br /&gt;
&lt;br /&gt;
Radeon 58XX outperforms Radeon 69XX by a very comfortable margin.  Oclvanitygen is sensitive to integer multiply throughput, and Radeon 58XX can multiply concurrently with other operations.  At similar clocks, a hobbled Radeon 5830 will outperform a Radeon 6970.&lt;br /&gt;
&lt;br /&gt;
In custom builds, CPU performance will be less than expected if the OpenSSL library is an older version (&amp;lt;1.0.0d) or is not built with the appropriate optimizations enabled.&lt;br /&gt;
&lt;br /&gt;
== Vanity addresses for other crypto-coins ==&lt;br /&gt;
While all &amp;quot;normal&amp;quot; bitcoin addresses start with a &amp;quot;1&amp;quot; (one) (except multi-signature addresses that start with &amp;quot;3&amp;quot;), some other crypto-coins use different address name spaces. Vanitygen (as of version 0.22) can be used to produce vanity addresses for these crypto coins as well (but not for [http://bitmessage.org bitmessage] addresses), by using the &amp;quot;-X&amp;quot; option. The following list provides some example command line calls and also indicates the address range for the respective coin:&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC), &#039;&#039;&#039;Devcoin&#039;&#039;&#039; (DVC), &#039;&#039;&#039;Freicoin&#039;&#039;&#039; (FRC), &#039;&#039;&#039;Terracoin&#039;&#039;&#039; (TRC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 0 1 -k&lt;br /&gt;
or simply just&lt;br /&gt;
 $ ./vanitygen 1 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC) etc. &#039;&#039;&#039;multi-signature&#039;&#039;&#039; addresses:&lt;br /&gt;
 $ ./vanitygen -X 5 3 -k&lt;br /&gt;
 $ ./vanitygen -X 5 31 -k&lt;br /&gt;
 $ ./vanitygen -X 5 39 -k&lt;br /&gt;
 $ ./vanitygen -X 5 3A -k&lt;br /&gt;
 $ ./vanitygen -X 5 3R -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Novacoin&#039;&#039;&#039; (NVC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 8 4 -k&lt;br /&gt;
 $ ./vanitygen -X 8 4D -k&lt;br /&gt;
 $ ./vanitygen -X 8 4Z -k&lt;br /&gt;
 $ ./vanitygen -X 8 4a -k&lt;br /&gt;
 $ ./vanitygen -X 8 4d -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Feathercoin&#039;&#039;&#039; (FTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 14 6 -k&lt;br /&gt;
 $ ./vanitygen -X 14 6d -k&lt;br /&gt;
 $ ./vanitygen -X 14 6z -k&lt;br /&gt;
 $ ./vanitygen -X 14 7 -k&lt;br /&gt;
 $ ./vanitygen -X 14 71 -k&lt;br /&gt;
 $ ./vanitygen -X 14 72 -k&lt;br /&gt;
 $ ./vanitygen -X 14 73 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Anoncoin&#039;&#039;&#039; (ANC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 23 A -k&lt;br /&gt;
 $ ./vanitygen -X 23 AF -k&lt;br /&gt;
 $ ./vanitygen -X 23 AZ -k&lt;br /&gt;
 $ ./vanitygen -X 23 Aa -k&lt;br /&gt;
 $ ./vanitygen -X 23 Af -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Chinacoin&#039;&#039;&#039; (CNC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 28 C -k&lt;br /&gt;
 $ ./vanitygen -X 28 CG -k&lt;br /&gt;
 $ ./vanitygen -X 28 CZ -k&lt;br /&gt;
 $ ./vanitygen -X 28 Ca -k&lt;br /&gt;
 $ ./vanitygen -X 28 Cf -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Digitalcoin&#039;&#039;&#039; (DGC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 30 D -k&lt;br /&gt;
 $ ./vanitygen -X 30 D5 -k&lt;br /&gt;
 $ ./vanitygen -X 30 D9 -k&lt;br /&gt;
 $ ./vanitygen -X 30 DA -k&lt;br /&gt;
 $ ./vanitygen -X 30 DU -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Litecoin&#039;&#039;&#039; (LTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 48 L -k&lt;br /&gt;
 $ ./vanitygen -X 48 LK -k&lt;br /&gt;
 $ ./vanitygen -X 48 LZ -k&lt;br /&gt;
 $ ./vanitygen -X 48 La -k&lt;br /&gt;
 $ ./vanitygen -X 48 Li -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Namecoin&#039;&#039;&#039; (NMC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 52 M -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mv -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mz -k&lt;br /&gt;
 $ ./vanitygen -X 52 N -k&lt;br /&gt;
 $ ./vanitygen -X 52 N1 -k&lt;br /&gt;
 $ ./vanitygen -X 52 N9 -k&lt;br /&gt;
 $ ./vanitygen -X 52 NA -k&lt;br /&gt;
 $ ./vanitygen -X 52 NK -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;PPCoin&#039;&#039;&#039; (PPC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 55 P -k&lt;br /&gt;
 $ ./vanitygen -X 55 P8 -k&lt;br /&gt;
 $ ./vanitygen -X 55 P9 -k&lt;br /&gt;
 $ ./vanitygen -X 55 PA -k&lt;br /&gt;
 $ ./vanitygen -X 55 PX -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;YaCoin&#039;&#039;&#039; (YAC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 77 X -k&lt;br /&gt;
 $ ./vanitygen -X 77 Xz -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y1 -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y9 -k&lt;br /&gt;
 $ ./vanitygen -X 77 YA -k&lt;br /&gt;
 $ ./vanitygen -X 77 YP -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;BBQcoin&#039;&#039;&#039; (BQC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 85 b -k&lt;br /&gt;
 $ ./vanitygen -X 85 bC -k&lt;br /&gt;
 $ ./vanitygen -X 85 bZ -k&lt;br /&gt;
 $ ./vanitygen -X 85 ba -k&lt;br /&gt;
 $ ./vanitygen -X 85 bc -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Ixcoin&#039;&#039;&#039; (IXC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 138 x -k&lt;br /&gt;
 $ ./vanitygen -X 138 xX -k&lt;br /&gt;
 $ ./vanitygen -X 138 xZ -k&lt;br /&gt;
 $ ./vanitygen -X 138 xa -k&lt;br /&gt;
 $ ./vanitygen -X 138 xv -k&lt;br /&gt;
&lt;br /&gt;
Generally, to find out the address format of a given crypto-coin (i.e. the number after the -X option of vanitygen) one can use this service:&lt;br /&gt;
    &amp;lt;nowiki&amp;gt;http://darkgamex.ch:2751/q/decode_address/&amp;lt;Address&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Example: Take any Litecoin address, e.g. &amp;quot;LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&amp;quot;, and submit this URL:&lt;br /&gt;
    http://darkgamex.ch:2751/q/decode_address/LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&lt;br /&gt;
The browser output will be:&lt;br /&gt;
    30:265dcf8616a9723d3b4ba35c246b041e20013597&lt;br /&gt;
The &#039;&#039;&#039;30&#039;&#039;&#039; is Litecoin&#039;s address format in hex (!), i.e. &#039;&#039;&#039;30&#039;&#039;&#039; (hex) = 48 (decimal) [because &#039;&#039;&#039;3&#039;&#039;&#039;*16 + &#039;&#039;&#039;0&#039;&#039;&#039;*1 = 48], i.e. use &#039;&#039;&#039;-X 48&#039;&#039;&#039; in vanitygen to generate Litecoin addresses.&lt;br /&gt;
&lt;br /&gt;
Some related info here: https://en.bitcoin.it/wiki/List_of_address_prefixes&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Firstbits]]&lt;br /&gt;
* [[Bitcoin Vanity Generation Website]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Vanity address]]&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:Invoice_address&amp;diff=42942</id>
		<title>Talk:Invoice address</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:Invoice_address&amp;diff=42942"/>
		<updated>2013-12-07T13:15:33Z</updated>

		<summary type="html">&lt;p&gt;Michael S: Minimum Address length = 26 (not 27) characters?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;During the described process of generating a bitcoin address, can it further be explained which parts are the private key or how they are computed too?&lt;br /&gt;
&lt;br /&gt;
:Please see [[Technical background of Bitcoin addresses]] for that information --[[User:Atheros|Atheros]] 08:42, 9 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This wiki says a bitcoin address can have a length between 27 and 34 characters. But acc. to &amp;quot;https://bitcointalk.org/index.php?topic=278814.msg2978906#msg2978906&amp;quot; bitcoin addresses with only 26 (!) characters are also possible as well. What is written there appears plausible to me, so maybe someone skilled can verify, and if confirmed, correct the text in this wiki. --[[User:Michael_S|Michael_S]], 14:13, 7 December 2013 (CET)&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=42753</id>
		<title>Vanitygen</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=42753"/>
		<updated>2013-11-29T02:29:42Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Vanity addresses for other crypto-coins */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vanitygen is a command-line vanity bitcoin address generator.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re tired of the random, cryptic addresses generated by regular bitcoin clients, you can use vanitygen to create a more personalized address.  Add unique flair when you tell people to send bitcoins to 1stDownqyMHHqnDPRSfiZ5GXJ8Gk9dbjL.  Alternatively, vanitygen can be used to generate random addresses offline.&lt;br /&gt;
&lt;br /&gt;
Vanitygen accepts as input a pattern, or list of patterns to search for, and produces a list of addresses and private keys.  Vanitygen&#039;s search is probabilistic, and the amount of time required to find a given pattern depends on how complex the pattern is, the speed of your computer, and whether you get lucky.&lt;br /&gt;
&lt;br /&gt;
The example below illustrates a session of vanitygen.  It is typical, and took about 10 sec to finish, using my Core 2 Duo E6600 CPU on x86-64 Linux:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./vanitygen 1Boat&lt;br /&gt;
Difficulty: 4476342&lt;br /&gt;
Pattern: 1Boat                                                                 &lt;br /&gt;
Address: 1BoatSLRHtKNngkdXEeobR76b53LETtpyT&lt;br /&gt;
Privkey: 5J4XJRyLVgzbXEgh8VNi4qovLzxRftzMd8a18KkdXv4EqAwX3tS&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vanitygen includes components to perform address searching on your CPU (vanitygen) and your OpenCL-compatible GPU (oclvanitygen).  Both can be built from source, and both are included in the Windows binary package.  Also included is oclvanityminer, the vanity address mining client.  Oclvanityminer can be used to automatically claim bounties on sites such as [[User:ThePiachu|ThePiachu]]&#039;s [[Vanity Pool]].&lt;br /&gt;
&lt;br /&gt;
Current version: 0.22&lt;br /&gt;
&lt;br /&gt;
Windows x86+x64 binaries [https://github.com/downloads/samr7/vanitygen/vanitygen-0.20-win.zip here].  PGP signature [http://insight.gotdns.org/~samr7/vanitygen-0.20-win.zip.asc here].&lt;br /&gt;
&lt;br /&gt;
Get the source from [https://github.com/samr7/vanitygen GitHub].  Includes Makefiles for Linux and Mac OS X.&lt;br /&gt;
&lt;br /&gt;
Main discussion at [https://bitcointalk.org/index.php?topic=25804.0 BitCoinTalk]&lt;br /&gt;
&lt;br /&gt;
For AMD Catalyst 13.1+ you need to run the AMD APP SDK Runtime from Catalyst 12.10 in order to get this program to work. (So all your Catalyst drivers would be brand new except for the SDK Runtime.) This is discussed on [https://github.com/samr7/vanitygen/issues/19 GitHub]. For Linux, use AMD APP SDK 2.7.&lt;br /&gt;
&lt;br /&gt;
Also the latest source doesn&#039;t work properly for high-end AMD cards (7XXX and greater). Solution is to change line 459 in oclengine.c from: return quirks; to: return quirks &amp;amp; ~VG_OCL_AMD_BFI_INT;&lt;br /&gt;
Windows x86+x64 binaries that solve this problem plus provide support for compressed keys [https://lifeboat.com/oclvanitygen here]. PGP signature [https://lifeboat.com/oclvanitygen.zip.sig here]. If you have any problems with the binaries, join the relevant [https://bitcointalk.org/index.php?topic=301068.0 BitCoinTalk discussion].&lt;br /&gt;
&lt;br /&gt;
== Expected keysearch rate ==&lt;br /&gt;
Main article: [[Vanitygen keysearch rate]]&lt;br /&gt;
&lt;br /&gt;
What key search rate can I expect from hardware X?&lt;br /&gt;
&lt;br /&gt;
Detailed list forthcoming.  Some ballpark estimates are listed below.&lt;br /&gt;
&lt;br /&gt;
 Dual-core desktop CPUs, 32-bit mode: 100-250 Kkey/s.&lt;br /&gt;
 Dual-core desktop CPUs, 64-bit mode: 150-450 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 32-bit mode: 200-400 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 64-bit mode: 300-750 Kkey/s.&lt;br /&gt;
 NVIDIA GT200 GPUs: up to 6.5 Mkey/s&lt;br /&gt;
 AMD Radeon 58XX, 68XX GPUs: up to 23.5 Mkey/s.&lt;br /&gt;
 AMD Radeon 69XX GPUs: up to 19.5 Mkey/s.&lt;br /&gt;
&lt;br /&gt;
As vanitygen performs a lot of large integer arithmetic, running it in 64-bit mode makes a huge difference in key search rate, easily a 50% improvement over 32-bit mode.  If you are using a 64-bit edition of Windows, and not using a GPU, be sure to use vanitygen64.exe.&lt;br /&gt;
&lt;br /&gt;
Radeon 58XX outperforms Radeon 69XX by a very comfortable margin.  Oclvanitygen is sensitive to integer multiply throughput, and Radeon 58XX can multiply concurrently with other operations.  At similar clocks, a hobbled Radeon 5830 will outperform a Radeon 6970.&lt;br /&gt;
&lt;br /&gt;
In custom builds, CPU performance will be less than expected if the OpenSSL library is an older version (&amp;lt;1.0.0d) or is not built with the appropriate optimizations enabled.&lt;br /&gt;
&lt;br /&gt;
== Vanity addresses for other crypto-coins ==&lt;br /&gt;
While all &amp;quot;normal&amp;quot; bitcoin addresses start with a &amp;quot;1&amp;quot; (one) (except multi-signature addresses that start with &amp;quot;3&amp;quot;), some other crypto-coins use different address name spaces. Vanitygen (as of version 0.22) can be used to produce vanity addresses for these crypto coins as well (but not for [http://bitmessage.org bitmessage] addresses), by using the &amp;quot;-X&amp;quot; option. The following list provides some example command line calls and also indicates the address range for the respective coin:&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC), &#039;&#039;&#039;Devcoin&#039;&#039;&#039; (DVC), &#039;&#039;&#039;Freicoin&#039;&#039;&#039; (FRC), &#039;&#039;&#039;Terracoin&#039;&#039;&#039; (TRC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 0 1 -k&lt;br /&gt;
or simply just&lt;br /&gt;
 $ ./vanitygen 1 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC) etc. &#039;&#039;&#039;multi-signature&#039;&#039;&#039; addresses:&lt;br /&gt;
 $ ./vanitygen -X 5 3 -k&lt;br /&gt;
 $ ./vanitygen -X 5 31 -k&lt;br /&gt;
 $ ./vanitygen -X 5 39 -k&lt;br /&gt;
 $ ./vanitygen -X 5 3A -k&lt;br /&gt;
 $ ./vanitygen -X 5 3R -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Novacoin&#039;&#039;&#039; (NVC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 8 4 -k&lt;br /&gt;
 $ ./vanitygen -X 8 4D -k&lt;br /&gt;
 $ ./vanitygen -X 8 4Z -k&lt;br /&gt;
 $ ./vanitygen -X 8 4a -k&lt;br /&gt;
 $ ./vanitygen -X 8 4d -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Feathercoin&#039;&#039;&#039; (FTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 14 6 -k&lt;br /&gt;
 $ ./vanitygen -X 14 6d -k&lt;br /&gt;
 $ ./vanitygen -X 14 6z -k&lt;br /&gt;
 $ ./vanitygen -X 14 7 -k&lt;br /&gt;
 $ ./vanitygen -X 14 71 -k&lt;br /&gt;
 $ ./vanitygen -X 14 72 -k&lt;br /&gt;
 $ ./vanitygen -X 14 73 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Anoncoin&#039;&#039;&#039; (ANC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 23 A -k&lt;br /&gt;
 $ ./vanitygen -X 23 AF -k&lt;br /&gt;
 $ ./vanitygen -X 23 AZ -k&lt;br /&gt;
 $ ./vanitygen -X 23 Aa -k&lt;br /&gt;
 $ ./vanitygen -X 23 Af -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Chinacoin&#039;&#039;&#039; (CNC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 28 C -k&lt;br /&gt;
 $ ./vanitygen -X 28 CG -k&lt;br /&gt;
 $ ./vanitygen -X 28 CZ -k&lt;br /&gt;
 $ ./vanitygen -X 28 Ca -k&lt;br /&gt;
 $ ./vanitygen -X 28 Cf -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Digitalcoin&#039;&#039;&#039; (DGC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 30 D -k&lt;br /&gt;
 $ ./vanitygen -X 30 D5 -k&lt;br /&gt;
 $ ./vanitygen -X 30 D9 -k&lt;br /&gt;
 $ ./vanitygen -X 30 DA -k&lt;br /&gt;
 $ ./vanitygen -X 30 DU -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Litecoin&#039;&#039;&#039; (LTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 48 L -k&lt;br /&gt;
 $ ./vanitygen -X 48 LK -k&lt;br /&gt;
 $ ./vanitygen -X 48 LZ -k&lt;br /&gt;
 $ ./vanitygen -X 48 La -k&lt;br /&gt;
 $ ./vanitygen -X 48 Li -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Namecoin&#039;&#039;&#039; (NMC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 52 M -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mv -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mz -k&lt;br /&gt;
 $ ./vanitygen -X 52 N -k&lt;br /&gt;
 $ ./vanitygen -X 52 N1 -k&lt;br /&gt;
 $ ./vanitygen -X 52 N9 -k&lt;br /&gt;
 $ ./vanitygen -X 52 NA -k&lt;br /&gt;
 $ ./vanitygen -X 52 NK -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;PPCoin&#039;&#039;&#039; (PPC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 55 P -k&lt;br /&gt;
 $ ./vanitygen -X 55 P8 -k&lt;br /&gt;
 $ ./vanitygen -X 55 P9 -k&lt;br /&gt;
 $ ./vanitygen -X 55 PA -k&lt;br /&gt;
 $ ./vanitygen -X 55 PX -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;YaCoin&#039;&#039;&#039; (YAC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 77 X -k&lt;br /&gt;
 $ ./vanitygen -X 77 Xz -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y1 -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y9 -k&lt;br /&gt;
 $ ./vanitygen -X 77 YA -k&lt;br /&gt;
 $ ./vanitygen -X 77 YP -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;BBQcoin&#039;&#039;&#039; (BQC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 85 b -k&lt;br /&gt;
 $ ./vanitygen -X 85 bC -k&lt;br /&gt;
 $ ./vanitygen -X 85 bZ -k&lt;br /&gt;
 $ ./vanitygen -X 85 ba -k&lt;br /&gt;
 $ ./vanitygen -X 85 bc -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Ixcoin&#039;&#039;&#039; (IXC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 138 x -k&lt;br /&gt;
 $ ./vanitygen -X 138 xX -k&lt;br /&gt;
 $ ./vanitygen -X 138 xZ -k&lt;br /&gt;
 $ ./vanitygen -X 138 xa -k&lt;br /&gt;
 $ ./vanitygen -X 138 xv -k&lt;br /&gt;
&lt;br /&gt;
Generally, to find out the address format of a given crypto-coin (i.e. the number after the -X option of vanitygen) one can use this service:&lt;br /&gt;
    &amp;lt;nowiki&amp;gt;http://darkgamex.ch:2751/q/decode_address/&amp;lt;Address&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Example: Take any Litecoin address, e.g. &amp;quot;LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&amp;quot;, and submit this URL:&lt;br /&gt;
    http://darkgamex.ch:2751/q/decode_address/LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&lt;br /&gt;
The browser output will be:&lt;br /&gt;
    30:265dcf8616a9723d3b4ba35c246b041e20013597&lt;br /&gt;
The &#039;&#039;&#039;30&#039;&#039;&#039; is Litecoin&#039;s address format in hex (!), i.e. 30 (hex) = 48 (decimal), i.e. use &#039;&#039;&#039;-X 48&#039;&#039;&#039; in vanitygen to generate Liteoin addresses.&lt;br /&gt;
&lt;br /&gt;
Some related info here: https://en.bitcoin.it/wiki/List_of_address_prefixes&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Firstbits]]&lt;br /&gt;
* [[Bitcoin Vanity Generation Website]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Vanity address]]&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=42752</id>
		<title>Vanitygen</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=42752"/>
		<updated>2013-11-29T02:27:12Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Vanity addresses for other crypto-coins */ more on multi-signature addresses&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vanitygen is a command-line vanity bitcoin address generator.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re tired of the random, cryptic addresses generated by regular bitcoin clients, you can use vanitygen to create a more personalized address.  Add unique flair when you tell people to send bitcoins to 1stDownqyMHHqnDPRSfiZ5GXJ8Gk9dbjL.  Alternatively, vanitygen can be used to generate random addresses offline.&lt;br /&gt;
&lt;br /&gt;
Vanitygen accepts as input a pattern, or list of patterns to search for, and produces a list of addresses and private keys.  Vanitygen&#039;s search is probabilistic, and the amount of time required to find a given pattern depends on how complex the pattern is, the speed of your computer, and whether you get lucky.&lt;br /&gt;
&lt;br /&gt;
The example below illustrates a session of vanitygen.  It is typical, and took about 10 sec to finish, using my Core 2 Duo E6600 CPU on x86-64 Linux:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./vanitygen 1Boat&lt;br /&gt;
Difficulty: 4476342&lt;br /&gt;
Pattern: 1Boat                                                                 &lt;br /&gt;
Address: 1BoatSLRHtKNngkdXEeobR76b53LETtpyT&lt;br /&gt;
Privkey: 5J4XJRyLVgzbXEgh8VNi4qovLzxRftzMd8a18KkdXv4EqAwX3tS&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vanitygen includes components to perform address searching on your CPU (vanitygen) and your OpenCL-compatible GPU (oclvanitygen).  Both can be built from source, and both are included in the Windows binary package.  Also included is oclvanityminer, the vanity address mining client.  Oclvanityminer can be used to automatically claim bounties on sites such as [[User:ThePiachu|ThePiachu]]&#039;s [[Vanity Pool]].&lt;br /&gt;
&lt;br /&gt;
Current version: 0.22&lt;br /&gt;
&lt;br /&gt;
Windows x86+x64 binaries [https://github.com/downloads/samr7/vanitygen/vanitygen-0.20-win.zip here].  PGP signature [http://insight.gotdns.org/~samr7/vanitygen-0.20-win.zip.asc here].&lt;br /&gt;
&lt;br /&gt;
Get the source from [https://github.com/samr7/vanitygen GitHub].  Includes Makefiles for Linux and Mac OS X.&lt;br /&gt;
&lt;br /&gt;
Main discussion at [https://bitcointalk.org/index.php?topic=25804.0 BitCoinTalk]&lt;br /&gt;
&lt;br /&gt;
For AMD Catalyst 13.1+ you need to run the AMD APP SDK Runtime from Catalyst 12.10 in order to get this program to work. (So all your Catalyst drivers would be brand new except for the SDK Runtime.) This is discussed on [https://github.com/samr7/vanitygen/issues/19 GitHub]. For Linux, use AMD APP SDK 2.7.&lt;br /&gt;
&lt;br /&gt;
Also the latest source doesn&#039;t work properly for high-end AMD cards (7XXX and greater). Solution is to change line 459 in oclengine.c from: return quirks; to: return quirks &amp;amp; ~VG_OCL_AMD_BFI_INT;&lt;br /&gt;
Windows x86+x64 binaries that solve this problem plus provide support for compressed keys [https://lifeboat.com/oclvanitygen here]. PGP signature [https://lifeboat.com/oclvanitygen.zip.sig here]. If you have any problems with the binaries, join the relevant [https://bitcointalk.org/index.php?topic=301068.0 BitCoinTalk discussion].&lt;br /&gt;
&lt;br /&gt;
== Expected keysearch rate ==&lt;br /&gt;
Main article: [[Vanitygen keysearch rate]]&lt;br /&gt;
&lt;br /&gt;
What key search rate can I expect from hardware X?&lt;br /&gt;
&lt;br /&gt;
Detailed list forthcoming.  Some ballpark estimates are listed below.&lt;br /&gt;
&lt;br /&gt;
 Dual-core desktop CPUs, 32-bit mode: 100-250 Kkey/s.&lt;br /&gt;
 Dual-core desktop CPUs, 64-bit mode: 150-450 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 32-bit mode: 200-400 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 64-bit mode: 300-750 Kkey/s.&lt;br /&gt;
 NVIDIA GT200 GPUs: up to 6.5 Mkey/s&lt;br /&gt;
 AMD Radeon 58XX, 68XX GPUs: up to 23.5 Mkey/s.&lt;br /&gt;
 AMD Radeon 69XX GPUs: up to 19.5 Mkey/s.&lt;br /&gt;
&lt;br /&gt;
As vanitygen performs a lot of large integer arithmetic, running it in 64-bit mode makes a huge difference in key search rate, easily a 50% improvement over 32-bit mode.  If you are using a 64-bit edition of Windows, and not using a GPU, be sure to use vanitygen64.exe.&lt;br /&gt;
&lt;br /&gt;
Radeon 58XX outperforms Radeon 69XX by a very comfortable margin.  Oclvanitygen is sensitive to integer multiply throughput, and Radeon 58XX can multiply concurrently with other operations.  At similar clocks, a hobbled Radeon 5830 will outperform a Radeon 6970.&lt;br /&gt;
&lt;br /&gt;
In custom builds, CPU performance will be less than expected if the OpenSSL library is an older version (&amp;lt;1.0.0d) or is not built with the appropriate optimizations enabled.&lt;br /&gt;
&lt;br /&gt;
== Vanity addresses for other crypto-coins ==&lt;br /&gt;
While all &amp;quot;normal&amp;quot; bitcoin addresses start with a &amp;quot;1&amp;quot; (one) (except multi-signature addresses that start with &amp;quot;3&amp;quot;), some other crypto-coins use different address name spaces. Vanitygen (as of version 0.22) can be used to produce vanity addresses for these crypto coins as well (but not for [http://bitmessage.org bitmessage] addresses), by using the &amp;quot;-X&amp;quot; option. The following list provides some example command line calls and also indicates the address range for the respective coin:&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC), &#039;&#039;&#039;Devcoin&#039;&#039;&#039; (DVC), &#039;&#039;&#039;Freicoin&#039;&#039;&#039; (FRC), &#039;&#039;&#039;Terracoin&#039;&#039;&#039; (TRC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 0 1 -k&lt;br /&gt;
or simply just&lt;br /&gt;
 $ ./vanitygen 1 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC) etc. &#039;&#039;&#039;mult-signature&#039;&#039;&#039; addresses:&lt;br /&gt;
 $ ./vanitygen -X 5 3 -k&lt;br /&gt;
 $ ./vanitygen -X 5 31 -k&lt;br /&gt;
 $ ./vanitygen -X 5 39 -k&lt;br /&gt;
 $ ./vanitygen -X 5 3A -k&lt;br /&gt;
 $ ./vanitygen -X 5 3R -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Novacoin&#039;&#039;&#039; (NVC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 8 4 -k&lt;br /&gt;
 $ ./vanitygen -X 8 4D -k&lt;br /&gt;
 $ ./vanitygen -X 8 4Z -k&lt;br /&gt;
 $ ./vanitygen -X 8 4a -k&lt;br /&gt;
 $ ./vanitygen -X 8 4d -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Feathercoin&#039;&#039;&#039; (FTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 14 6 -k&lt;br /&gt;
 $ ./vanitygen -X 14 6d -k&lt;br /&gt;
 $ ./vanitygen -X 14 6z -k&lt;br /&gt;
 $ ./vanitygen -X 14 7 -k&lt;br /&gt;
 $ ./vanitygen -X 14 71 -k&lt;br /&gt;
 $ ./vanitygen -X 14 72 -k&lt;br /&gt;
 $ ./vanitygen -X 14 73 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Anoncoin&#039;&#039;&#039; (ANC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 23 A -k&lt;br /&gt;
 $ ./vanitygen -X 23 AF -k&lt;br /&gt;
 $ ./vanitygen -X 23 AZ -k&lt;br /&gt;
 $ ./vanitygen -X 23 Aa -k&lt;br /&gt;
 $ ./vanitygen -X 23 Af -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Chinacoin&#039;&#039;&#039; (CNC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 28 C -k&lt;br /&gt;
 $ ./vanitygen -X 28 CG -k&lt;br /&gt;
 $ ./vanitygen -X 28 CZ -k&lt;br /&gt;
 $ ./vanitygen -X 28 Ca -k&lt;br /&gt;
 $ ./vanitygen -X 28 Cf -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Digitalcoin&#039;&#039;&#039; (DGC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 30 D -k&lt;br /&gt;
 $ ./vanitygen -X 30 D5 -k&lt;br /&gt;
 $ ./vanitygen -X 30 D9 -k&lt;br /&gt;
 $ ./vanitygen -X 30 DA -k&lt;br /&gt;
 $ ./vanitygen -X 30 DU -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Litecoin&#039;&#039;&#039; (LTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 48 L -k&lt;br /&gt;
 $ ./vanitygen -X 48 LK -k&lt;br /&gt;
 $ ./vanitygen -X 48 LZ -k&lt;br /&gt;
 $ ./vanitygen -X 48 La -k&lt;br /&gt;
 $ ./vanitygen -X 48 Li -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Namecoin&#039;&#039;&#039; (NMC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 52 M -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mv -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mz -k&lt;br /&gt;
 $ ./vanitygen -X 52 N -k&lt;br /&gt;
 $ ./vanitygen -X 52 N1 -k&lt;br /&gt;
 $ ./vanitygen -X 52 N9 -k&lt;br /&gt;
 $ ./vanitygen -X 52 NA -k&lt;br /&gt;
 $ ./vanitygen -X 52 NK -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;PPCoin&#039;&#039;&#039; (PPC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 55 P -k&lt;br /&gt;
 $ ./vanitygen -X 55 P8 -k&lt;br /&gt;
 $ ./vanitygen -X 55 P9 -k&lt;br /&gt;
 $ ./vanitygen -X 55 PA -k&lt;br /&gt;
 $ ./vanitygen -X 55 PX -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;YaCoin&#039;&#039;&#039; (YAC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 77 X -k&lt;br /&gt;
 $ ./vanitygen -X 77 Xz -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y1 -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y9 -k&lt;br /&gt;
 $ ./vanitygen -X 77 YA -k&lt;br /&gt;
 $ ./vanitygen -X 77 YP -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;BBQcoin&#039;&#039;&#039; (BQC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 85 b -k&lt;br /&gt;
 $ ./vanitygen -X 85 bC -k&lt;br /&gt;
 $ ./vanitygen -X 85 bZ -k&lt;br /&gt;
 $ ./vanitygen -X 85 ba -k&lt;br /&gt;
 $ ./vanitygen -X 85 bc -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Ixcoin&#039;&#039;&#039; (IXC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 138 x -k&lt;br /&gt;
 $ ./vanitygen -X 138 xX -k&lt;br /&gt;
 $ ./vanitygen -X 138 xZ -k&lt;br /&gt;
 $ ./vanitygen -X 138 xa -k&lt;br /&gt;
 $ ./vanitygen -X 138 xv -k&lt;br /&gt;
&lt;br /&gt;
Generally, to find out the address format of a given crypto-coin (i.e. the number after the -X option of vanitygen) one can use this service:&lt;br /&gt;
    &amp;lt;nowiki&amp;gt;http://darkgamex.ch:2751/q/decode_address/&amp;lt;Address&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Example: Take any Litecoin address, e.g. &amp;quot;LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&amp;quot;, and submit this URL:&lt;br /&gt;
    http://darkgamex.ch:2751/q/decode_address/LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&lt;br /&gt;
The browser output will be:&lt;br /&gt;
    30:265dcf8616a9723d3b4ba35c246b041e20013597&lt;br /&gt;
The &#039;&#039;&#039;30&#039;&#039;&#039; is Litecoin&#039;s address format in hex (!), i.e. 30 (hex) = 48 (decimal), i.e. use &#039;&#039;&#039;-X 48&#039;&#039;&#039; in vanitygen to generate Liteoin addresses.&lt;br /&gt;
&lt;br /&gt;
Some related info here: https://en.bitcoin.it/wiki/List_of_address_prefixes&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Firstbits]]&lt;br /&gt;
* [[Bitcoin Vanity Generation Website]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Vanity address]]&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=42751</id>
		<title>Vanitygen</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=42751"/>
		<updated>2013-11-29T02:21:31Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Vanity addresses for other crypto-coins */ added Bitcoin multi-signature addresses in the list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vanitygen is a command-line vanity bitcoin address generator.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re tired of the random, cryptic addresses generated by regular bitcoin clients, you can use vanitygen to create a more personalized address.  Add unique flair when you tell people to send bitcoins to 1stDownqyMHHqnDPRSfiZ5GXJ8Gk9dbjL.  Alternatively, vanitygen can be used to generate random addresses offline.&lt;br /&gt;
&lt;br /&gt;
Vanitygen accepts as input a pattern, or list of patterns to search for, and produces a list of addresses and private keys.  Vanitygen&#039;s search is probabilistic, and the amount of time required to find a given pattern depends on how complex the pattern is, the speed of your computer, and whether you get lucky.&lt;br /&gt;
&lt;br /&gt;
The example below illustrates a session of vanitygen.  It is typical, and took about 10 sec to finish, using my Core 2 Duo E6600 CPU on x86-64 Linux:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./vanitygen 1Boat&lt;br /&gt;
Difficulty: 4476342&lt;br /&gt;
Pattern: 1Boat                                                                 &lt;br /&gt;
Address: 1BoatSLRHtKNngkdXEeobR76b53LETtpyT&lt;br /&gt;
Privkey: 5J4XJRyLVgzbXEgh8VNi4qovLzxRftzMd8a18KkdXv4EqAwX3tS&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vanitygen includes components to perform address searching on your CPU (vanitygen) and your OpenCL-compatible GPU (oclvanitygen).  Both can be built from source, and both are included in the Windows binary package.  Also included is oclvanityminer, the vanity address mining client.  Oclvanityminer can be used to automatically claim bounties on sites such as [[User:ThePiachu|ThePiachu]]&#039;s [[Vanity Pool]].&lt;br /&gt;
&lt;br /&gt;
Current version: 0.22&lt;br /&gt;
&lt;br /&gt;
Windows x86+x64 binaries [https://github.com/downloads/samr7/vanitygen/vanitygen-0.20-win.zip here].  PGP signature [http://insight.gotdns.org/~samr7/vanitygen-0.20-win.zip.asc here].&lt;br /&gt;
&lt;br /&gt;
Get the source from [https://github.com/samr7/vanitygen GitHub].  Includes Makefiles for Linux and Mac OS X.&lt;br /&gt;
&lt;br /&gt;
Main discussion at [https://bitcointalk.org/index.php?topic=25804.0 BitCoinTalk]&lt;br /&gt;
&lt;br /&gt;
For AMD Catalyst 13.1+ you need to run the AMD APP SDK Runtime from Catalyst 12.10 in order to get this program to work. (So all your Catalyst drivers would be brand new except for the SDK Runtime.) This is discussed on [https://github.com/samr7/vanitygen/issues/19 GitHub]. For Linux, use AMD APP SDK 2.7.&lt;br /&gt;
&lt;br /&gt;
Also the latest source doesn&#039;t work properly for high-end AMD cards (7XXX and greater). Solution is to change line 459 in oclengine.c from: return quirks; to: return quirks &amp;amp; ~VG_OCL_AMD_BFI_INT;&lt;br /&gt;
Windows x86+x64 binaries that solve this problem plus provide support for compressed keys [https://lifeboat.com/oclvanitygen here]. PGP signature [https://lifeboat.com/oclvanitygen.zip.sig here]. If you have any problems with the binaries, join the relevant [https://bitcointalk.org/index.php?topic=301068.0 BitCoinTalk discussion].&lt;br /&gt;
&lt;br /&gt;
== Expected keysearch rate ==&lt;br /&gt;
Main article: [[Vanitygen keysearch rate]]&lt;br /&gt;
&lt;br /&gt;
What key search rate can I expect from hardware X?&lt;br /&gt;
&lt;br /&gt;
Detailed list forthcoming.  Some ballpark estimates are listed below.&lt;br /&gt;
&lt;br /&gt;
 Dual-core desktop CPUs, 32-bit mode: 100-250 Kkey/s.&lt;br /&gt;
 Dual-core desktop CPUs, 64-bit mode: 150-450 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 32-bit mode: 200-400 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 64-bit mode: 300-750 Kkey/s.&lt;br /&gt;
 NVIDIA GT200 GPUs: up to 6.5 Mkey/s&lt;br /&gt;
 AMD Radeon 58XX, 68XX GPUs: up to 23.5 Mkey/s.&lt;br /&gt;
 AMD Radeon 69XX GPUs: up to 19.5 Mkey/s.&lt;br /&gt;
&lt;br /&gt;
As vanitygen performs a lot of large integer arithmetic, running it in 64-bit mode makes a huge difference in key search rate, easily a 50% improvement over 32-bit mode.  If you are using a 64-bit edition of Windows, and not using a GPU, be sure to use vanitygen64.exe.&lt;br /&gt;
&lt;br /&gt;
Radeon 58XX outperforms Radeon 69XX by a very comfortable margin.  Oclvanitygen is sensitive to integer multiply throughput, and Radeon 58XX can multiply concurrently with other operations.  At similar clocks, a hobbled Radeon 5830 will outperform a Radeon 6970.&lt;br /&gt;
&lt;br /&gt;
In custom builds, CPU performance will be less than expected if the OpenSSL library is an older version (&amp;lt;1.0.0d) or is not built with the appropriate optimizations enabled.&lt;br /&gt;
&lt;br /&gt;
== Vanity addresses for other crypto-coins ==&lt;br /&gt;
While all bitcoin addresses start with a &amp;quot;1&amp;quot; (one), some other crypto-coins use different address name spaces. Vanitygen (as of version 0.22) can be used to produce vanity addresses for these crypto coins as well (but not for [http://bitmessage.org bitmessage] addresses), by using the &amp;quot;-X&amp;quot; option. The following list provides some example command line calls and also indicates the address range for the respective coin:&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC), &#039;&#039;&#039;Devcoin&#039;&#039;&#039; (DVC), &#039;&#039;&#039;Freicoin&#039;&#039;&#039; (FRC), &#039;&#039;&#039;Terracoin&#039;&#039;&#039; (TRC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 0 1 -k&lt;br /&gt;
or simply just&lt;br /&gt;
 $ ./vanitygen 1 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC) etc. &#039;&#039;&#039;mult-signature&#039;&#039;&#039; addresses:&lt;br /&gt;
 $ ./vanitygen -X 5 31 -k&lt;br /&gt;
 $ ./vanitygen -X 5 39 -k&lt;br /&gt;
 $ ./vanitygen -X 5 3A -k&lt;br /&gt;
 $ ./vanitygen -X 5 3R -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Novacoin&#039;&#039;&#039; (NVC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 8 4 -k&lt;br /&gt;
 $ ./vanitygen -X 8 4D -k&lt;br /&gt;
 $ ./vanitygen -X 8 4Z -k&lt;br /&gt;
 $ ./vanitygen -X 8 4a -k&lt;br /&gt;
 $ ./vanitygen -X 8 4d -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Feathercoin&#039;&#039;&#039; (FTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 14 6 -k&lt;br /&gt;
 $ ./vanitygen -X 14 6d -k&lt;br /&gt;
 $ ./vanitygen -X 14 6z -k&lt;br /&gt;
 $ ./vanitygen -X 14 7 -k&lt;br /&gt;
 $ ./vanitygen -X 14 71 -k&lt;br /&gt;
 $ ./vanitygen -X 14 72 -k&lt;br /&gt;
 $ ./vanitygen -X 14 73 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Anoncoin&#039;&#039;&#039; (ANC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 23 A -k&lt;br /&gt;
 $ ./vanitygen -X 23 AF -k&lt;br /&gt;
 $ ./vanitygen -X 23 AZ -k&lt;br /&gt;
 $ ./vanitygen -X 23 Aa -k&lt;br /&gt;
 $ ./vanitygen -X 23 Af -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Chinacoin&#039;&#039;&#039; (CNC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 28 C -k&lt;br /&gt;
 $ ./vanitygen -X 28 CG -k&lt;br /&gt;
 $ ./vanitygen -X 28 CZ -k&lt;br /&gt;
 $ ./vanitygen -X 28 Ca -k&lt;br /&gt;
 $ ./vanitygen -X 28 Cf -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Digitalcoin&#039;&#039;&#039; (DGC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 30 D -k&lt;br /&gt;
 $ ./vanitygen -X 30 D5 -k&lt;br /&gt;
 $ ./vanitygen -X 30 D9 -k&lt;br /&gt;
 $ ./vanitygen -X 30 DA -k&lt;br /&gt;
 $ ./vanitygen -X 30 DU -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Litecoin&#039;&#039;&#039; (LTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 48 L -k&lt;br /&gt;
 $ ./vanitygen -X 48 LK -k&lt;br /&gt;
 $ ./vanitygen -X 48 LZ -k&lt;br /&gt;
 $ ./vanitygen -X 48 La -k&lt;br /&gt;
 $ ./vanitygen -X 48 Li -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Namecoin&#039;&#039;&#039; (NMC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 52 M -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mv -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mz -k&lt;br /&gt;
 $ ./vanitygen -X 52 N -k&lt;br /&gt;
 $ ./vanitygen -X 52 N1 -k&lt;br /&gt;
 $ ./vanitygen -X 52 N9 -k&lt;br /&gt;
 $ ./vanitygen -X 52 NA -k&lt;br /&gt;
 $ ./vanitygen -X 52 NK -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;PPCoin&#039;&#039;&#039; (PPC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 55 P -k&lt;br /&gt;
 $ ./vanitygen -X 55 P8 -k&lt;br /&gt;
 $ ./vanitygen -X 55 P9 -k&lt;br /&gt;
 $ ./vanitygen -X 55 PA -k&lt;br /&gt;
 $ ./vanitygen -X 55 PX -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;YaCoin&#039;&#039;&#039; (YAC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 77 X -k&lt;br /&gt;
 $ ./vanitygen -X 77 Xz -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y1 -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y9 -k&lt;br /&gt;
 $ ./vanitygen -X 77 YA -k&lt;br /&gt;
 $ ./vanitygen -X 77 YP -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;BBQcoin&#039;&#039;&#039; (BQC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 85 b -k&lt;br /&gt;
 $ ./vanitygen -X 85 bC -k&lt;br /&gt;
 $ ./vanitygen -X 85 bZ -k&lt;br /&gt;
 $ ./vanitygen -X 85 ba -k&lt;br /&gt;
 $ ./vanitygen -X 85 bc -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Ixcoin&#039;&#039;&#039; (IXC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 138 x -k&lt;br /&gt;
 $ ./vanitygen -X 138 xX -k&lt;br /&gt;
 $ ./vanitygen -X 138 xZ -k&lt;br /&gt;
 $ ./vanitygen -X 138 xa -k&lt;br /&gt;
 $ ./vanitygen -X 138 xv -k&lt;br /&gt;
&lt;br /&gt;
Generally, to find out the address format of a given crypto-coin (i.e. the number after the -X option of vanitygen) one can use this service:&lt;br /&gt;
    &amp;lt;nowiki&amp;gt;http://darkgamex.ch:2751/q/decode_address/&amp;lt;Address&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Example: Take any Litecoin address, e.g. &amp;quot;LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&amp;quot;, and submit this URL:&lt;br /&gt;
    http://darkgamex.ch:2751/q/decode_address/LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&lt;br /&gt;
The browser output will be:&lt;br /&gt;
    30:265dcf8616a9723d3b4ba35c246b041e20013597&lt;br /&gt;
The &#039;&#039;&#039;30&#039;&#039;&#039; is Litecoin&#039;s address format in hex (!), i.e. 30 (hex) = 48 (decimal), i.e. use &#039;&#039;&#039;-X 48&#039;&#039;&#039; in vanitygen to generate Liteoin addresses.&lt;br /&gt;
&lt;br /&gt;
Some related info here: https://en.bitcoin.it/wiki/List_of_address_prefixes&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Firstbits]]&lt;br /&gt;
* [[Bitcoin Vanity Generation Website]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Vanity address]]&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40992</id>
		<title>Talk:BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40992"/>
		<updated>2013-09-12T01:41:14Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Critical Improvement of BIP 0021 for &amp;quot;req-&amp;quot; param */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marian on IRC reports: &amp;quot;The BNF [here] is erroneous, regarding the params, it says [ &amp;quot;?&amp;quot; bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters&amp;quot;. --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; ([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013) So should it rather be written something like this (I am not a BNF expert, just following my logic):&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparam [ bitcoinparams ] ]&lt;br /&gt;
 bitcoinparams   = *bitcoinparamamp&lt;br /&gt;
 bitcoinparamamp = &amp;quot;&amp;amp;&amp;quot; bitcoinparam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently (&amp;quot;tips w/o taps&amp;quot;) ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.&lt;br /&gt;
&lt;br /&gt;
When watching bitpay&#039;s mobile checkout demo video &amp;quot;http://www.youtube.com/watch?v=YZ-pqo0cLcE&amp;quot; it is clear that paying tips is somewhat cumbersome for the customer with today&#039;s wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;Enhancement proposal&#039;&#039;&#039;&amp;lt;/span&amp;gt;:&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Actually, &amp;quot;tipparam&amp;quot; is just a special case of &amp;quot;otherparam&amp;quot;, hence completely downwards compatible.&lt;br /&gt;
&lt;br /&gt;
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer&#039;s wallet app.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039; for the following scenario:&lt;br /&gt;
:Request 0.567 BTC from the customer of a restaurant and make the customer&#039;s bitcoin app show an advanced send dialog that allows adding a tip:&lt;br /&gt;
&lt;br /&gt;
Ex. 1a) The pre-set tip value in the send dialog is undefined (user must specify) or set to the client&#039;s pre-configured default tip value:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 1b) The pre-set tip value in the send dialog is explicitly set to zero (this restaurant is on &amp;quot;service charge included in &#039;amount&#039;&amp;quot; policy and informs the client about this explicitly by &amp;quot;tip=0&amp;quot; in the URI):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0.08505&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [URI code of the percentage character is &amp;quot;%25&amp;quot;]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [&amp;quot;lazy&amp;quot; notation, omitting the &amp;quot;25&amp;quot;. Actually, this is NOT correct, not URI compliant (RFC 2396), hence such an URI&lt;br /&gt;
   should not be generated. But it is proposed that the wallet app that has to decode the URI is implemented to understand&lt;br /&gt;
   this &amp;quot;lazy&amp;quot; syntax in the &amp;quot;tip&amp;quot; field anyhow, as safeguard to avoid errors in case that the merchant app generates such&lt;br /&gt;
   a &amp;quot;lazy&amp;quot; URI]&lt;br /&gt;
&lt;br /&gt;
Ex. 3) The pre-set tip value is 0.08508 BTC, and the &amp;quot;notes&amp;quot; field in the client app is pre-occupied with the name of the restaurant:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;amp;message=Charly%27s%20Bar&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* The new parameter has no &amp;quot;req-&amp;quot; prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.&lt;br /&gt;
* Otherwise, the customer&#039;s bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.&lt;br /&gt;
&lt;br /&gt;
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.&lt;br /&gt;
&lt;br /&gt;
Standard send dialog (no tips):&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Advanced send dialog for giving tips:&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipON_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
Discussion: It has been argued that the described improvement of the user experience for the scenario &amp;quot;make payment with a tip&amp;quot; can be achieved by sole improvement of the wallet app, without any protocol change.&lt;br /&gt;
&lt;br /&gt;
But this is only partly true. Certainly enhancement of the wallet app to provide an advanced &amp;quot;send&amp;quot; dialog for easy tipping is crucial. However, with the legacy BIP 0021 the wallet app cannot know whether it shall display the standard send dialog (no tip) or the advanced send dialog (with tip option) to the user. So the user has to select this manually. With the optional &amp;quot;tip&amp;quot; parameter in the URI, the wallet app can readily display the appropriate send dialog without extra user interaction, thereby providing ultimate user experience.&lt;br /&gt;
&lt;br /&gt;
== Further enhancement for paying tips in restaurant/bar: &amp;quot;tip address&amp;quot; ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 9 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Further enhancement: Sending billing amount and tip to separate addresses:&lt;br /&gt;
&lt;br /&gt;
(Note: This feature is typically invisible in the GUI of the customer&#039;s wallet app)&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam   = &amp;quot;tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&amp;amp;tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;tipaddr&amp;quot; parameter specifies that if the wallet app sends a tip in addition to the &amp;quot;amount&amp;quot;, it shall &#039;&#039;&#039;&#039;&#039;preferably&#039;&#039;&#039;&#039;&#039; send it to the specifed &amp;quot;tip address&amp;quot;. However, this is not mandatory (because it is an optional parameter w/o &amp;quot;req-&amp;quot;), so if the wallet app sends amount and tip to the main address, the merchant shall still be able to figure this out.&lt;br /&gt;
&lt;br /&gt;
If the merchant cannot handle tips sent to the same address as the billing amount, he shall instead make use of this parameter:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&#039;&#039;&#039;reqtipaddrparam = &amp;quot;req-tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the wallet app is guaranteed to send the tip to the separate address, or will otherwise reject the complete URI. Upon rejection, the waiter knows that the customer has a non-compliant wallet app and can start a second try showing the URI without any tip parameters (or with &amp;quot;tip=0&amp;quot;). The tip can then be paid in a separate transaction (or classically by cash).&lt;br /&gt;
&lt;br /&gt;
== Short parameter tags yielding shorter URIs for QR codes ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 10 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Another proposal: Allow short forms for the parameter tags, to shorten the URIs.&lt;br /&gt;
&lt;br /&gt;
This is not important for URIs when used in links on web pages, but it can become relevant when generating QR codes. The longer the URI, the more difficult it will be to scan and decode the QR code by a smartphone due to smaller QR code block size or lower error protection level.&lt;br /&gt;
&lt;br /&gt;
Hence a simple table of equivalent ALIASES is proposed, to shorten the URI:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Parameter Tag       Alias&#039;&#039;&#039;&lt;br /&gt;
 amount=             a=&lt;br /&gt;
 label=              l=&lt;br /&gt;
 message=            m=&lt;br /&gt;
 tip=                t=&lt;br /&gt;
 tipaddr=            ta=&lt;br /&gt;
 req-                -&lt;br /&gt;
 req-tipaddr=        -ta=&lt;br /&gt;
 req-aal=            -aal=&lt;br /&gt;
&lt;br /&gt;
Hence, for example the following URIs are fully equivalent:&lt;br /&gt;
&lt;br /&gt;
155 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;amp;tip=15%25&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;message=Thank%20You&amp;amp;label=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
129 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?a=.567&amp;amp;t=15%25&amp;amp;-ta=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;m=Thank%20You&amp;amp;l=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Critical Improvement of BIP 0021 for &amp;quot;req-&amp;quot; param ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 12 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
One aspect of current BIP 0021 is critical:&lt;br /&gt;
&lt;br /&gt;
It says that wallets that do not know one or several &amp;quot;req-&amp;quot; keys in the URI should reject (i.e. not process) the complete URI, to avoid doing anything in the wrong way.&lt;br /&gt;
&lt;br /&gt;
However, very old wallet apps may have not even implemented this rule and may still process the &amp;quot;known part&amp;quot; of the URI, thereby causing an unwanted result.&lt;br /&gt;
&lt;br /&gt;
The solution to the problem is to specify BIP 0021 in a way that, in case that at least one &amp;quot;req-&amp;quot; key is used, some other details of the URI must be modified too, such that it becomes &amp;quot;incompatible&amp;quot; and &amp;quot;undecodable&amp;quot; by older apps.&lt;br /&gt;
&lt;br /&gt;
The concrete proposal here is to append &amp;quot;R-&amp;quot; directly after &amp;quot;bitcoin:&amp;quot;. Then a string with a &amp;quot;req-&amp;quot; parameter would look like this:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;R-&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;amp;tip=15%25&amp;amp;&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;req-&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;message=Thank%20You&amp;amp;label=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The BFN Syntax then looks as follows:&lt;br /&gt;
  bitcoinurn     = &amp;quot;bitcoin:&amp;quot; &#039;&#039;&#039;[ &amp;quot;R-&amp;quot; ]&#039;&#039;&#039; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparams ]&lt;br /&gt;
where &amp;quot;R-&amp;quot; is mandatory as soon as at least one &amp;quot;reqparam&amp;quot; is used.&lt;br /&gt;
&lt;br /&gt;
== Paying to Multiple Outputs ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 12 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Another Enhancement relates to the &amp;quot;Humble Bundle&amp;quot; scenario: Paying one transaction with multiple outputs, specifying a dedicated amount for each output address.&lt;br /&gt;
&lt;br /&gt;
This scenario allows to specify additional pairs of addresses and amounts. Optionally, also further labels can be specified. We call the new parameter &amp;quot;&#039;&#039;&#039;req-aal&#039;&#039;&#039;&amp;quot; for &#039;&#039;&#039;a&#039;&#039;&#039;ddress-&#039;&#039;&#039;a&#039;&#039;&#039;mount-&#039;&#039;&#039;l&#039;&#039;&#039;abel, and we specify it as a &#039;&#039;&#039;req&#039;&#039;&#039;uired parameter because procesing an incomplete URI would result in sending only a partial amount.&lt;br /&gt;
&lt;br /&gt;
 bitcoinparam   = amountparam | labelparam | &#039;&#039;&#039;reqaalparam |&#039;&#039;&#039; messageparam | tipparam | tipaddrparam | otherparam | reqparam&lt;br /&gt;
 reqaalparam    = &amp;quot;req-aal=&amp;quot; bitcoinaddress &amp;quot;:&amp;quot; *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;:&amp;quot; *pchar]&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:R-175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;amp;label=book&amp;amp;req-aal=1tZdShH7b38klseWrTZm5sE8PrtZPwqdK:0.123:game&amp;amp;message=Thank%20You&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40991</id>
		<title>Talk:BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40991"/>
		<updated>2013-09-12T01:38:27Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Short parameter tags yielding shorter URIs for QR codes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marian on IRC reports: &amp;quot;The BNF [here] is erroneous, regarding the params, it says [ &amp;quot;?&amp;quot; bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters&amp;quot;. --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; ([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013) So should it rather be written something like this (I am not a BNF expert, just following my logic):&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparam [ bitcoinparams ] ]&lt;br /&gt;
 bitcoinparams   = *bitcoinparamamp&lt;br /&gt;
 bitcoinparamamp = &amp;quot;&amp;amp;&amp;quot; bitcoinparam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently (&amp;quot;tips w/o taps&amp;quot;) ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.&lt;br /&gt;
&lt;br /&gt;
When watching bitpay&#039;s mobile checkout demo video &amp;quot;http://www.youtube.com/watch?v=YZ-pqo0cLcE&amp;quot; it is clear that paying tips is somewhat cumbersome for the customer with today&#039;s wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;Enhancement proposal&#039;&#039;&#039;&amp;lt;/span&amp;gt;:&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Actually, &amp;quot;tipparam&amp;quot; is just a special case of &amp;quot;otherparam&amp;quot;, hence completely downwards compatible.&lt;br /&gt;
&lt;br /&gt;
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer&#039;s wallet app.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039; for the following scenario:&lt;br /&gt;
:Request 0.567 BTC from the customer of a restaurant and make the customer&#039;s bitcoin app show an advanced send dialog that allows adding a tip:&lt;br /&gt;
&lt;br /&gt;
Ex. 1a) The pre-set tip value in the send dialog is undefined (user must specify) or set to the client&#039;s pre-configured default tip value:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 1b) The pre-set tip value in the send dialog is explicitly set to zero (this restaurant is on &amp;quot;service charge included in &#039;amount&#039;&amp;quot; policy and informs the client about this explicitly by &amp;quot;tip=0&amp;quot; in the URI):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0.08505&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [URI code of the percentage character is &amp;quot;%25&amp;quot;]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [&amp;quot;lazy&amp;quot; notation, omitting the &amp;quot;25&amp;quot;. Actually, this is NOT correct, not URI compliant (RFC 2396), hence such an URI&lt;br /&gt;
   should not be generated. But it is proposed that the wallet app that has to decode the URI is implemented to understand&lt;br /&gt;
   this &amp;quot;lazy&amp;quot; syntax in the &amp;quot;tip&amp;quot; field anyhow, as safeguard to avoid errors in case that the merchant app generates such&lt;br /&gt;
   a &amp;quot;lazy&amp;quot; URI]&lt;br /&gt;
&lt;br /&gt;
Ex. 3) The pre-set tip value is 0.08508 BTC, and the &amp;quot;notes&amp;quot; field in the client app is pre-occupied with the name of the restaurant:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;amp;message=Charly%27s%20Bar&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* The new parameter has no &amp;quot;req-&amp;quot; prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.&lt;br /&gt;
* Otherwise, the customer&#039;s bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.&lt;br /&gt;
&lt;br /&gt;
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.&lt;br /&gt;
&lt;br /&gt;
Standard send dialog (no tips):&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Advanced send dialog for giving tips:&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipON_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
Discussion: It has been argued that the described improvement of the user experience for the scenario &amp;quot;make payment with a tip&amp;quot; can be achieved by sole improvement of the wallet app, without any protocol change.&lt;br /&gt;
&lt;br /&gt;
But this is only partly true. Certainly enhancement of the wallet app to provide an advanced &amp;quot;send&amp;quot; dialog for easy tipping is crucial. However, with the legacy BIP 0021 the wallet app cannot know whether it shall display the standard send dialog (no tip) or the advanced send dialog (with tip option) to the user. So the user has to select this manually. With the optional &amp;quot;tip&amp;quot; parameter in the URI, the wallet app can readily display the appropriate send dialog without extra user interaction, thereby providing ultimate user experience.&lt;br /&gt;
&lt;br /&gt;
== Further enhancement for paying tips in restaurant/bar: &amp;quot;tip address&amp;quot; ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 9 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Further enhancement: Sending billing amount and tip to separate addresses:&lt;br /&gt;
&lt;br /&gt;
(Note: This feature is typically invisible in the GUI of the customer&#039;s wallet app)&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam   = &amp;quot;tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&amp;amp;tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;tipaddr&amp;quot; parameter specifies that if the wallet app sends a tip in addition to the &amp;quot;amount&amp;quot;, it shall &#039;&#039;&#039;&#039;&#039;preferably&#039;&#039;&#039;&#039;&#039; send it to the specifed &amp;quot;tip address&amp;quot;. However, this is not mandatory (because it is an optional parameter w/o &amp;quot;req-&amp;quot;), so if the wallet app sends amount and tip to the main address, the merchant shall still be able to figure this out.&lt;br /&gt;
&lt;br /&gt;
If the merchant cannot handle tips sent to the same address as the billing amount, he shall instead make use of this parameter:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&#039;&#039;&#039;reqtipaddrparam = &amp;quot;req-tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the wallet app is guaranteed to send the tip to the separate address, or will otherwise reject the complete URI. Upon rejection, the waiter knows that the customer has a non-compliant wallet app and can start a second try showing the URI without any tip parameters (or with &amp;quot;tip=0&amp;quot;). The tip can then be paid in a separate transaction (or classically by cash).&lt;br /&gt;
&lt;br /&gt;
== Short parameter tags yielding shorter URIs for QR codes ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 10 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Another proposal: Allow short forms for the parameter tags, to shorten the URIs.&lt;br /&gt;
&lt;br /&gt;
This is not important for URIs when used in links on web pages, but it can become relevant when generating QR codes. The longer the URI, the more difficult it will be to scan and decode the QR code by a smartphone due to smaller QR code block size or lower error protection level.&lt;br /&gt;
&lt;br /&gt;
Hence a simple table of equivalent ALIASES is proposed, to shorten the URI:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Parameter Tag       Alias&#039;&#039;&#039;&lt;br /&gt;
 amount=             a=&lt;br /&gt;
 label=              l=&lt;br /&gt;
 message=            m=&lt;br /&gt;
 tip=                t=&lt;br /&gt;
 tipaddr=            ta=&lt;br /&gt;
 req-                -&lt;br /&gt;
 req-tipaddr=        -ta=&lt;br /&gt;
 req-aal=            -aal=&lt;br /&gt;
&lt;br /&gt;
Hence, for example the following URIs are fully equivalent:&lt;br /&gt;
&lt;br /&gt;
155 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;amp;tip=15%25&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;message=Thank%20You&amp;amp;label=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
129 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?a=.567&amp;amp;t=15%25&amp;amp;-ta=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;m=Thank%20You&amp;amp;l=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Critical Improvement of BIP 0021 for &amp;quot;req-&amp;quot; param ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 12 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
One aspect of current BIP 0021 is critical:&lt;br /&gt;
&lt;br /&gt;
It says that wallets that do not know any of the &amp;quot;req-&amp;quot; keys in the URI should reject (i.e. not process) the complete URI, to avoid doing anything in the wrong way.&lt;br /&gt;
&lt;br /&gt;
However, even older wallet apps may have not even implemented this rule and may still process the &amp;quot;known part&amp;quot; of the URI, thereby causing an unwanted result.&lt;br /&gt;
&lt;br /&gt;
The solution to the problem is to specify BIP 0021 in a way that, in case that at least one &amp;quot;req-&amp;quot; key is used, some other details of the URI must be modified too, such that it becomes &amp;quot;incompatible&amp;quot; and &amp;quot;undecodable&amp;quot; by older apps.&lt;br /&gt;
&lt;br /&gt;
The concrete proposal here is to append &amp;quot;R-&amp;quot; directly after &amp;quot;bitcoin:&amp;quot;. Then a string with a &amp;quot;req-&amp;quot; parameter would look like this:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;R-&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;amp;tip=15%25&amp;amp;&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;req-&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;message=Thank%20You&amp;amp;label=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The BFN Syntax then looks as follows:&lt;br /&gt;
  bitcoinurn     = &amp;quot;bitcoin:&amp;quot; &#039;&#039;&#039;[ &amp;quot;R-&amp;quot; ]&#039;&#039;&#039; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparams ]&lt;br /&gt;
where &amp;quot;R-&amp;quot; is mandatory as soon as at least one &amp;quot;reqparam&amp;quot; is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Paying to Multiple Outputs ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 12 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Another Enhancement relates to the &amp;quot;Humble Bundle&amp;quot; scenario: Paying one transaction with multiple outputs, specifying a dedicated amount for each output address.&lt;br /&gt;
&lt;br /&gt;
This scenario allows to specify additional pairs of addresses and amounts. Optionally, also further labels can be specified. We call the new parameter &amp;quot;&#039;&#039;&#039;req-aal&#039;&#039;&#039;&amp;quot; for &#039;&#039;&#039;a&#039;&#039;&#039;ddress-&#039;&#039;&#039;a&#039;&#039;&#039;mount-&#039;&#039;&#039;l&#039;&#039;&#039;abel, and we specify it as a &#039;&#039;&#039;req&#039;&#039;&#039;uired parameter because procesing an incomplete URI would result in sending only a partial amount.&lt;br /&gt;
&lt;br /&gt;
 bitcoinparam   = amountparam | labelparam | &#039;&#039;&#039;reqaalparam |&#039;&#039;&#039; messageparam | tipparam | tipaddrparam | otherparam | reqparam&lt;br /&gt;
 reqaalparam    = &amp;quot;req-aal=&amp;quot; bitcoinaddress &amp;quot;:&amp;quot; *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;:&amp;quot; *pchar]&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:R-175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;amp;label=book&amp;amp;req-aal=1tZdShH7b38klseWrTZm5sE8PrtZPwqdK:0.123:game&amp;amp;message=Thank%20You&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40990</id>
		<title>Talk:BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40990"/>
		<updated>2013-09-12T01:32:47Z</updated>

		<summary type="html">&lt;p&gt;Michael S: Enhancement: Multiple output addresses&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marian on IRC reports: &amp;quot;The BNF [here] is erroneous, regarding the params, it says [ &amp;quot;?&amp;quot; bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters&amp;quot;. --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; ([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013) So should it rather be written something like this (I am not a BNF expert, just following my logic):&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparam [ bitcoinparams ] ]&lt;br /&gt;
 bitcoinparams   = *bitcoinparamamp&lt;br /&gt;
 bitcoinparamamp = &amp;quot;&amp;amp;&amp;quot; bitcoinparam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently (&amp;quot;tips w/o taps&amp;quot;) ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.&lt;br /&gt;
&lt;br /&gt;
When watching bitpay&#039;s mobile checkout demo video &amp;quot;http://www.youtube.com/watch?v=YZ-pqo0cLcE&amp;quot; it is clear that paying tips is somewhat cumbersome for the customer with today&#039;s wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;Enhancement proposal&#039;&#039;&#039;&amp;lt;/span&amp;gt;:&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Actually, &amp;quot;tipparam&amp;quot; is just a special case of &amp;quot;otherparam&amp;quot;, hence completely downwards compatible.&lt;br /&gt;
&lt;br /&gt;
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer&#039;s wallet app.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039; for the following scenario:&lt;br /&gt;
:Request 0.567 BTC from the customer of a restaurant and make the customer&#039;s bitcoin app show an advanced send dialog that allows adding a tip:&lt;br /&gt;
&lt;br /&gt;
Ex. 1a) The pre-set tip value in the send dialog is undefined (user must specify) or set to the client&#039;s pre-configured default tip value:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 1b) The pre-set tip value in the send dialog is explicitly set to zero (this restaurant is on &amp;quot;service charge included in &#039;amount&#039;&amp;quot; policy and informs the client about this explicitly by &amp;quot;tip=0&amp;quot; in the URI):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0.08505&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [URI code of the percentage character is &amp;quot;%25&amp;quot;]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [&amp;quot;lazy&amp;quot; notation, omitting the &amp;quot;25&amp;quot;. Actually, this is NOT correct, not URI compliant (RFC 2396), hence such an URI&lt;br /&gt;
   should not be generated. But it is proposed that the wallet app that has to decode the URI is implemented to understand&lt;br /&gt;
   this &amp;quot;lazy&amp;quot; syntax in the &amp;quot;tip&amp;quot; field anyhow, as safeguard to avoid errors in case that the merchant app generates such&lt;br /&gt;
   a &amp;quot;lazy&amp;quot; URI]&lt;br /&gt;
&lt;br /&gt;
Ex. 3) The pre-set tip value is 0.08508 BTC, and the &amp;quot;notes&amp;quot; field in the client app is pre-occupied with the name of the restaurant:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;amp;message=Charly%27s%20Bar&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* The new parameter has no &amp;quot;req-&amp;quot; prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.&lt;br /&gt;
* Otherwise, the customer&#039;s bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.&lt;br /&gt;
&lt;br /&gt;
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.&lt;br /&gt;
&lt;br /&gt;
Standard send dialog (no tips):&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Advanced send dialog for giving tips:&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipON_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
Discussion: It has been argued that the described improvement of the user experience for the scenario &amp;quot;make payment with a tip&amp;quot; can be achieved by sole improvement of the wallet app, without any protocol change.&lt;br /&gt;
&lt;br /&gt;
But this is only partly true. Certainly enhancement of the wallet app to provide an advanced &amp;quot;send&amp;quot; dialog for easy tipping is crucial. However, with the legacy BIP 0021 the wallet app cannot know whether it shall display the standard send dialog (no tip) or the advanced send dialog (with tip option) to the user. So the user has to select this manually. With the optional &amp;quot;tip&amp;quot; parameter in the URI, the wallet app can readily display the appropriate send dialog without extra user interaction, thereby providing ultimate user experience.&lt;br /&gt;
&lt;br /&gt;
== Further enhancement for paying tips in restaurant/bar: &amp;quot;tip address&amp;quot; ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 9 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Further enhancement: Sending billing amount and tip to separate addresses:&lt;br /&gt;
&lt;br /&gt;
(Note: This feature is typically invisible in the GUI of the customer&#039;s wallet app)&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam   = &amp;quot;tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&amp;amp;tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;tipaddr&amp;quot; parameter specifies that if the wallet app sends a tip in addition to the &amp;quot;amount&amp;quot;, it shall &#039;&#039;&#039;&#039;&#039;preferably&#039;&#039;&#039;&#039;&#039; send it to the specifed &amp;quot;tip address&amp;quot;. However, this is not mandatory (because it is an optional parameter w/o &amp;quot;req-&amp;quot;), so if the wallet app sends amount and tip to the main address, the merchant shall still be able to figure this out.&lt;br /&gt;
&lt;br /&gt;
If the merchant cannot handle tips sent to the same address as the billing amount, he shall instead make use of this parameter:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&#039;&#039;&#039;reqtipaddrparam = &amp;quot;req-tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the wallet app is guaranteed to send the tip to the separate address, or will otherwise reject the complete URI. Upon rejection, the waiter knows that the customer has a non-compliant wallet app and can start a second try showing the URI without any tip parameters (or with &amp;quot;tip=0&amp;quot;). The tip can then be paid in a separate transaction (or classically by cash).&lt;br /&gt;
&lt;br /&gt;
== Short parameter tags yielding shorter URIs for QR codes ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 10 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Another proposal: Allow short forms for the parameter tags, to shorten the URIs.&lt;br /&gt;
&lt;br /&gt;
This is not important for URIs when used in links on web pages, but it can become relevant when generating QR codes. The longer the URI, the more difficult it will be to scan and decode the QR code by a smartphone due to smaller QR code block size or lower error protection level.&lt;br /&gt;
&lt;br /&gt;
Hence a simple table of equivalent ALIASES is proposed, to shorten the URI:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Parameter Tag       Alias&#039;&#039;&#039;&lt;br /&gt;
 amount=             a=&lt;br /&gt;
 label=              l=&lt;br /&gt;
 message=            m=&lt;br /&gt;
 tip=                t=&lt;br /&gt;
 tipaddr=            i=&lt;br /&gt;
 req-                -&lt;br /&gt;
 req-tipaddr=        -i=&lt;br /&gt;
&lt;br /&gt;
Hence, for example the following URIs are fully equivalent:&lt;br /&gt;
&lt;br /&gt;
155 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;amp;tip=15%25&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;message=Thank%20You&amp;amp;label=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
128 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?a=.567&amp;amp;t=15%25&amp;amp;-i=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;m=Thank%20You&amp;amp;l=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Critical Improvement of BIP 0021 for &amp;quot;req-&amp;quot; param ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 12 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
One aspect of current BIP 0021 is critical:&lt;br /&gt;
&lt;br /&gt;
It says that wallets that do not know any of the &amp;quot;req-&amp;quot; keys in the URI should reject (i.e. not process) the complete URI, to avoid doing anything in the wrong way.&lt;br /&gt;
&lt;br /&gt;
However, even older wallet apps may have not even implemented this rule and may still process the &amp;quot;known part&amp;quot; of the URI, thereby causing an unwanted result.&lt;br /&gt;
&lt;br /&gt;
The solution to the problem is to specify BIP 0021 in a way that, in case that at least one &amp;quot;req-&amp;quot; key is used, some other details of the URI must be modified too, such that it becomes &amp;quot;incompatible&amp;quot; and &amp;quot;undecodable&amp;quot; by older apps.&lt;br /&gt;
&lt;br /&gt;
The concrete proposal here is to append &amp;quot;R-&amp;quot; directly after &amp;quot;bitcoin:&amp;quot;. Then a string with a &amp;quot;req-&amp;quot; parameter would look like this:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;R-&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;amp;tip=15%25&amp;amp;&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;req-&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;message=Thank%20You&amp;amp;label=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The BFN Syntax then looks as follows:&lt;br /&gt;
  bitcoinurn     = &amp;quot;bitcoin:&amp;quot; &#039;&#039;&#039;[ &amp;quot;R-&amp;quot; ]&#039;&#039;&#039; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparams ]&lt;br /&gt;
where &amp;quot;R-&amp;quot; is mandatory as soon as at least one &amp;quot;reqparam&amp;quot; is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Paying to Multiple Outputs ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 12 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Another Enhancement relates to the &amp;quot;Humble Bundle&amp;quot; scenario: Paying one transaction with multiple outputs, specifying a dedicated amount for each output address.&lt;br /&gt;
&lt;br /&gt;
This scenario allows to specify additional pairs of addresses and amounts. Optionally, also further labels can be specified. We call the new parameter &amp;quot;&#039;&#039;&#039;req-aal&#039;&#039;&#039;&amp;quot; for &#039;&#039;&#039;a&#039;&#039;&#039;ddress-&#039;&#039;&#039;a&#039;&#039;&#039;mount-&#039;&#039;&#039;l&#039;&#039;&#039;abel, and we specify it as a &#039;&#039;&#039;req&#039;&#039;&#039;uired parameter because procesing an incomplete URI would result in sending only a partial amount.&lt;br /&gt;
&lt;br /&gt;
 bitcoinparam   = amountparam | labelparam | &#039;&#039;&#039;reqaalparam |&#039;&#039;&#039; messageparam | tipparam | tipaddrparam | otherparam | reqparam&lt;br /&gt;
 reqaalparam    = &amp;quot;req-aal=&amp;quot; bitcoinaddress &amp;quot;:&amp;quot; *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;:&amp;quot; *pchar]&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:R-175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;amp;label=book&amp;amp;req-aal=1tZdShH7b38klseWrTZm5sE8PrtZPwqdK:0.123:game&amp;amp;message=Thank%20You&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40987</id>
		<title>Talk:BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40987"/>
		<updated>2013-09-12T01:07:53Z</updated>

		<summary type="html">&lt;p&gt;Michael S: Critical improvement proposal of BIP 0021 for &amp;quot;req-&amp;quot; parameter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marian on IRC reports: &amp;quot;The BNF [here] is erroneous, regarding the params, it says [ &amp;quot;?&amp;quot; bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters&amp;quot;. --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; ([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013) So should it rather be written something like this (I am not a BNF expert, just following my logic):&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparam [ bitcoinparams ] ]&lt;br /&gt;
 bitcoinparams   = *bitcoinparamamp&lt;br /&gt;
 bitcoinparamamp = &amp;quot;&amp;amp;&amp;quot; bitcoinparam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently (&amp;quot;tips w/o taps&amp;quot;) ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.&lt;br /&gt;
&lt;br /&gt;
When watching bitpay&#039;s mobile checkout demo video &amp;quot;http://www.youtube.com/watch?v=YZ-pqo0cLcE&amp;quot; it is clear that paying tips is somewhat cumbersome for the customer with today&#039;s wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;Enhancement proposal&#039;&#039;&#039;&amp;lt;/span&amp;gt;:&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Actually, &amp;quot;tipparam&amp;quot; is just a special case of &amp;quot;otherparam&amp;quot;, hence completely downwards compatible.&lt;br /&gt;
&lt;br /&gt;
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer&#039;s wallet app.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039; for the following scenario:&lt;br /&gt;
:Request 0.567 BTC from the customer of a restaurant and make the customer&#039;s bitcoin app show an advanced send dialog that allows adding a tip:&lt;br /&gt;
&lt;br /&gt;
Ex. 1a) The pre-set tip value in the send dialog is undefined (user must specify) or set to the client&#039;s pre-configured default tip value:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 1b) The pre-set tip value in the send dialog is explicitly set to zero (this restaurant is on &amp;quot;service charge included in &#039;amount&#039;&amp;quot; policy and informs the client about this explicitly by &amp;quot;tip=0&amp;quot; in the URI):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0.08505&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [URI code of the percentage character is &amp;quot;%25&amp;quot;]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [&amp;quot;lazy&amp;quot; notation, omitting the &amp;quot;25&amp;quot;. Actually, this is NOT correct, not URI compliant (RFC 2396), hence such an URI&lt;br /&gt;
   should not be generated. But it is proposed that the wallet app that has to decode the URI is implemented to understand&lt;br /&gt;
   this &amp;quot;lazy&amp;quot; syntax in the &amp;quot;tip&amp;quot; field anyhow, as safeguard to avoid errors in case that the merchant app generates such&lt;br /&gt;
   a &amp;quot;lazy&amp;quot; URI]&lt;br /&gt;
&lt;br /&gt;
Ex. 3) The pre-set tip value is 0.08508 BTC, and the &amp;quot;notes&amp;quot; field in the client app is pre-occupied with the name of the restaurant:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;amp;message=Charly%27s%20Bar&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* The new parameter has no &amp;quot;req-&amp;quot; prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.&lt;br /&gt;
* Otherwise, the customer&#039;s bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.&lt;br /&gt;
&lt;br /&gt;
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.&lt;br /&gt;
&lt;br /&gt;
Standard send dialog (no tips):&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Advanced send dialog for giving tips:&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipON_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
Discussion: It has been argued that the described improvement of the user experience for the scenario &amp;quot;make payment with a tip&amp;quot; can be achieved by sole improvement of the wallet app, without any protocol change.&lt;br /&gt;
&lt;br /&gt;
But this is only partly true. Certainly enhancement of the wallet app to provide an advanced &amp;quot;send&amp;quot; dialog for easy tipping is crucial. However, with the legacy BIP 0021 the wallet app cannot know whether it shall display the standard send dialog (no tip) or the advanced send dialog (with tip option) to the user. So the user has to select this manually. With the optional &amp;quot;tip&amp;quot; parameter in the URI, the wallet app can readily display the appropriate send dialog without extra user interaction, thereby providing ultimate user experience.&lt;br /&gt;
&lt;br /&gt;
== Further enhancement for paying tips in restaurant/bar: &amp;quot;tip address&amp;quot; ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 9 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Further enhancement: Sending billing amount and tip to separate addresses:&lt;br /&gt;
&lt;br /&gt;
(Note: This feature is typically invisible in the GUI of the customer&#039;s wallet app)&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam   = &amp;quot;tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&amp;amp;tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;tipaddr&amp;quot; parameter specifies that if the wallet app sends a tip in addition to the &amp;quot;amount&amp;quot;, it shall &#039;&#039;&#039;&#039;&#039;preferably&#039;&#039;&#039;&#039;&#039; send it to the specifed &amp;quot;tip address&amp;quot;. However, this is not mandatory (because it is an optional parameter w/o &amp;quot;req-&amp;quot;), so if the wallet app sends amount and tip to the main address, the merchant shall still be able to figure this out.&lt;br /&gt;
&lt;br /&gt;
If the merchant cannot handle tips sent to the same address as the billing amount, he shall instead make use of this parameter:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&#039;&#039;&#039;reqtipaddrparam = &amp;quot;req-tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the wallet app is guaranteed to send the tip to the separate address, or will otherwise reject the complete URI. Upon rejection, the waiter knows that the customer has a non-compliant wallet app and can start a second try showing the URI without any tip parameters (or with &amp;quot;tip=0&amp;quot;). The tip can then be paid in a separate transaction (or classically by cash).&lt;br /&gt;
&lt;br /&gt;
== Short parameter tags yielding shorter URIs for QR codes ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 10 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Another proposal: Allow short forms for the parameter tags, to shorten the URIs.&lt;br /&gt;
&lt;br /&gt;
This is not important for URIs when used in links on web pages, but it can become relevant when generating QR codes. The longer the URI, the more difficult it will be to scan and decode the QR code by a smartphone due to smaller QR code block size or lower error protection level.&lt;br /&gt;
&lt;br /&gt;
Hence a simple table of equivalent ALIASES is proposed, to shorten the URI:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Parameter Tag       Alias&#039;&#039;&#039;&lt;br /&gt;
 amount=             a=&lt;br /&gt;
 label=              l=&lt;br /&gt;
 message=            m=&lt;br /&gt;
 tip=                t=&lt;br /&gt;
 tipaddr=            i=&lt;br /&gt;
 req-                -&lt;br /&gt;
 req-tipaddr=        -i=&lt;br /&gt;
&lt;br /&gt;
Hence, for example the following URIs are fully equivalent:&lt;br /&gt;
&lt;br /&gt;
155 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;amp;tip=15%25&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;message=Thank%20You&amp;amp;label=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
128 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?a=.567&amp;amp;t=15%25&amp;amp;-i=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;m=Thank%20You&amp;amp;l=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Critical Improvement of BIP 0021 for &amp;quot;req-&amp;quot; param ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 12 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
One aspect of current BIP 0021 is critical:&lt;br /&gt;
&lt;br /&gt;
It says that wallets that do not know any of the &amp;quot;req-&amp;quot; keys in the URI should reject (i.e. not process) the complete URI, to avoid doing anything in the wrong way.&lt;br /&gt;
&lt;br /&gt;
However, even older wallet apps may have not even implemented this rule and may still process the &amp;quot;known part&amp;quot; of the URI, thereby causing an unwanted result.&lt;br /&gt;
&lt;br /&gt;
The solution to the problem is to specify BIP 0021 in a way that, in case that at least one &amp;quot;req-&amp;quot; key is used, some other details of the URI must be modified too, such that it becomes &amp;quot;incompatible&amp;quot; and &amp;quot;undecodable&amp;quot; by older apps.&lt;br /&gt;
&lt;br /&gt;
The concrete proposal here is to append &amp;quot;R-&amp;quot; directly after &amp;quot;bitcoin:&amp;quot;. Then a string with a &amp;quot;req-&amp;quot; parameter would look like this:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;R-&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;amp;tip=15%25&amp;amp;&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;req-&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;message=Thank%20You&amp;amp;label=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The BFN Syntax then looks as follows:&lt;br /&gt;
  bitcoinurn     = &amp;quot;bitcoin:&amp;quot; &#039;&#039;&#039;[ &amp;quot;R-&amp;quot; ]&#039;&#039;&#039; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparams ]&lt;br /&gt;
where &amp;quot;R-&amp;quot; is mandatory as soon as at least one &amp;quot;reqparam&amp;quot; is used.&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40922</id>
		<title>Talk:BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40922"/>
		<updated>2013-09-09T20:00:04Z</updated>

		<summary type="html">&lt;p&gt;Michael S: Added short figure descriptions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marian on IRC reports: &amp;quot;The BNF [here] is erroneous, regarding the params, it says [ &amp;quot;?&amp;quot; bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters&amp;quot;. --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; ([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013) So should it rather be written something like this (I am not a BNF expert, just following my logic):&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparam [ bitcoinparams ] ]&lt;br /&gt;
 bitcoinparams   = *bitcoinparamamp&lt;br /&gt;
 bitcoinparamamp = &amp;quot;&amp;amp;&amp;quot; bitcoinparam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently (&amp;quot;tips w/o taps&amp;quot;) ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.&lt;br /&gt;
&lt;br /&gt;
When watching bitpay&#039;s mobile checkout demo video &amp;quot;http://www.youtube.com/watch?v=YZ-pqo0cLcE&amp;quot; it is clear that paying tips is somewhat cumbersome for the customer with today&#039;s wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;Enhancement proposal&#039;&#039;&#039;&amp;lt;/span&amp;gt;:&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Actually, &amp;quot;tipparam&amp;quot; is just a special case of &amp;quot;otherparam&amp;quot;, hence completely downwards compatible.&lt;br /&gt;
&lt;br /&gt;
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer&#039;s wallet app.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039; for the following scenario:&lt;br /&gt;
:Request 0.567 BTC from the customer of a restaurant and make the customer&#039;s bitcoin app show an advanced send dialog that allows adding a tip:&lt;br /&gt;
&lt;br /&gt;
Ex. 1a) The pre-set tip value in the send dialog is undefined (user must specify) or set to the client&#039;s pre-configured default tip value:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 1b) The pre-set tip value in the send dialog is explicitly set to zero (this restaurant is on &amp;quot;service charge included in &#039;amount&#039;&amp;quot; policy and informs the client about this explicitly by &amp;quot;tip=0&amp;quot; in the URI):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0.08505&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [URI code of the percentage character is &amp;quot;%25&amp;quot;]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [&amp;quot;lazy&amp;quot; notation, omitting the &amp;quot;25&amp;quot;. Actually, this is NOT correct, not URI compliant (RFC 2396), hence such an URI&lt;br /&gt;
   should not be generated. But it is proposed that the wallet app that has to decode the URI is implemented to understand&lt;br /&gt;
   this &amp;quot;lazy&amp;quot; syntax in the &amp;quot;tip&amp;quot; field anyhow, as safeguard to avoid errors in case that the merchant app generates such&lt;br /&gt;
   a &amp;quot;lazy&amp;quot; URI]&lt;br /&gt;
&lt;br /&gt;
Ex. 3) The pre-set tip value is 0.08508 BTC, and the &amp;quot;notes&amp;quot; field in the client app is pre-occupied with the name of the restaurant:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;amp;message=Charly%27s%20Bar&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* The new parameter has no &amp;quot;req-&amp;quot; prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.&lt;br /&gt;
* Otherwise, the customer&#039;s bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.&lt;br /&gt;
&lt;br /&gt;
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.&lt;br /&gt;
&lt;br /&gt;
Standard send dialog (no tips):&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Advanced send dialog for giving tips:&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipON_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
Discussion: It has been argued that the described improvement of the user experience for the scenario &amp;quot;make payment with a tip&amp;quot; can be achieved by sole improvement of the wallet app, without any protocol change.&lt;br /&gt;
&lt;br /&gt;
But this is only partly true. Certainly enhancement of the wallet app to provide an advanced &amp;quot;send&amp;quot; dialog for easy tipping is crucial. However, with the legacy BIP 0021 the wallet app cannot know whether it shall display the standard send dialog (no tip) or the advanced send dialog (with tip option) to the user. So the user has to select this manually. With the optional &amp;quot;tip&amp;quot; parameter in the URI, the wallet app can readily display the appropriate send dialog without extra user interaction, thereby providing ultimate user experience.&lt;br /&gt;
&lt;br /&gt;
== Further enhancement for paying tips in restaurant/bar: &amp;quot;tip address&amp;quot; ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 9 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Further enhancement: Sending billing amount and tip to separate addresses:&lt;br /&gt;
&lt;br /&gt;
(Note: This feature is typically invisible in the GUI of the customer&#039;s wallet app)&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam   = &amp;quot;tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&amp;amp;tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;tipaddr&amp;quot; parameter specifies that if the wallet app sends a tip in addition to the &amp;quot;amount&amp;quot;, it shall &#039;&#039;&#039;&#039;&#039;preferably&#039;&#039;&#039;&#039;&#039; send it to the specifed &amp;quot;tip address&amp;quot;. However, this is not mandatory (because it is an optional parameter w/o &amp;quot;req-&amp;quot;), so if the wallet app sends amount and tip to the main address, the merchant shall still be able to figure this out.&lt;br /&gt;
&lt;br /&gt;
If the merchant cannot handle tips sent to the same address as the billing amount, he shall instead make use of this parameter:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&#039;&#039;&#039;reqtipaddrparam = &amp;quot;req-tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the wallet app is guaranteed to send the tip to the separate address, or will otherwise reject the complete URI. Upon rejection, the waiter knows that the customer has a non-compliant wallet app and can start a second try showing the URI without any tip parameters (or with &amp;quot;tip=0&amp;quot;). The tip can then be paid in a separate transaction (or classically by cash).&lt;br /&gt;
&lt;br /&gt;
== Short parameter tags yielding shorter URIs for QR codes ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 10 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Another proposal: Allow short forms for the parameter tags, to shorten the URIs.&lt;br /&gt;
&lt;br /&gt;
This is not important for URIs when used in links on web pages, but it can become relevant when generating QR codes. The longer the URI, the more difficult it will be to scan and decode the QR code by a smartphone due to smaller QR code block size or lower error protection level.&lt;br /&gt;
&lt;br /&gt;
Hence a simple table of equivalent ALIASES is proposed, to shorten the URI:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Parameter Tag       Alias&#039;&#039;&#039;&lt;br /&gt;
 amount=             a=&lt;br /&gt;
 label=              l=&lt;br /&gt;
 message=            m=&lt;br /&gt;
 tip=                t=&lt;br /&gt;
 tipaddr=            i=&lt;br /&gt;
 req-                -&lt;br /&gt;
 req-tipaddr=        -i=&lt;br /&gt;
&lt;br /&gt;
Hence, for example the following URIs are fully equivalent:&lt;br /&gt;
&lt;br /&gt;
155 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;amp;tip=15%25&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;message=Thank%20You&amp;amp;label=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
128 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?a=.567&amp;amp;t=15%25&amp;amp;-i=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;m=Thank%20You&amp;amp;l=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40921</id>
		<title>Talk:BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40921"/>
		<updated>2013-09-09T19:55:46Z</updated>

		<summary type="html">&lt;p&gt;Michael S: Give reason why BIP 0021 protocol change complements sole wallet app improvement&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marian on IRC reports: &amp;quot;The BNF [here] is erroneous, regarding the params, it says [ &amp;quot;?&amp;quot; bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters&amp;quot;. --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; ([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013) So should it rather be written something like this (I am not a BNF expert, just following my logic):&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparam [ bitcoinparams ] ]&lt;br /&gt;
 bitcoinparams   = *bitcoinparamamp&lt;br /&gt;
 bitcoinparamamp = &amp;quot;&amp;amp;&amp;quot; bitcoinparam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently (&amp;quot;tips w/o taps&amp;quot;) ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.&lt;br /&gt;
&lt;br /&gt;
When watching bitpay&#039;s mobile checkout demo video &amp;quot;http://www.youtube.com/watch?v=YZ-pqo0cLcE&amp;quot; it is clear that paying tips is somewhat cumbersome for the customer with today&#039;s wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;Enhancement proposal&#039;&#039;&#039;&amp;lt;/span&amp;gt;:&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Actually, &amp;quot;tipparam&amp;quot; is just a special case of &amp;quot;otherparam&amp;quot;, hence completely downwards compatible.&lt;br /&gt;
&lt;br /&gt;
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer&#039;s wallet app.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039; for the following scenario:&lt;br /&gt;
:Request 0.567 BTC from the customer of a restaurant and make the customer&#039;s bitcoin app show an advanced send dialog that allows adding a tip:&lt;br /&gt;
&lt;br /&gt;
Ex. 1a) The pre-set tip value in the send dialog is undefined (user must specify) or set to the client&#039;s pre-configured default tip value:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 1b) The pre-set tip value in the send dialog is explicitly set to zero (this restaurant is on &amp;quot;service charge included in &#039;amount&#039;&amp;quot; policy and informs the client about this explicitly by &amp;quot;tip=0&amp;quot; in the URI):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0.08505&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [URI code of the percentage character is &amp;quot;%25&amp;quot;]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [&amp;quot;lazy&amp;quot; notation, omitting the &amp;quot;25&amp;quot;. Actually, this is NOT correct, not URI compliant (RFC 2396), hence such an URI&lt;br /&gt;
   should not be generated. But it is proposed that the wallet app that has to decode the URI is implemented to understand&lt;br /&gt;
   this &amp;quot;lazy&amp;quot; syntax in the &amp;quot;tip&amp;quot; field anyhow, as safeguard to avoid errors in case that the merchant app generates such&lt;br /&gt;
   a &amp;quot;lazy&amp;quot; URI]&lt;br /&gt;
&lt;br /&gt;
Ex. 3) The pre-set tip value is 0.08508 BTC, and the &amp;quot;notes&amp;quot; field in the client app is pre-occupied with the name of the restaurant:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;amp;message=Charly%27s%20Bar&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* The new parameter has no &amp;quot;req-&amp;quot; prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.&lt;br /&gt;
* Otherwise, the customer&#039;s bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.&lt;br /&gt;
&lt;br /&gt;
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipON_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
Discussion: It has been argued that the described improvement of the user experience for the scenario &amp;quot;make payment with a tip&amp;quot; can be achieved by sole improvement of the wallet app, without any protocol change.&lt;br /&gt;
&lt;br /&gt;
But this is only partly true. Certainly enhancement of the wallet app to provide an advanced &amp;quot;send&amp;quot; dialog for easy tipping is crucial. However, with the legacy BIP 0021 the wallet app cannot know whether it shall display the standard send dialog (no tip) or the advanced send dialog (with tip option) to the user. So the user has to select this manually. With the optional &amp;quot;tip&amp;quot; parameter in the URI, the wallet app can readily display the appropriate send dialog without extra user interaction, thereby providing ultimate user experience.&lt;br /&gt;
&lt;br /&gt;
== Further enhancement for paying tips in restaurant/bar: &amp;quot;tip address&amp;quot; ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 9 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Further enhancement: Sending billing amount and tip to separate addresses:&lt;br /&gt;
&lt;br /&gt;
(Note: This feature is typically invisible in the GUI of the customer&#039;s wallet app)&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam   = &amp;quot;tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&amp;amp;tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;tipaddr&amp;quot; parameter specifies that if the wallet app sends a tip in addition to the &amp;quot;amount&amp;quot;, it shall &#039;&#039;&#039;&#039;&#039;preferably&#039;&#039;&#039;&#039;&#039; send it to the specifed &amp;quot;tip address&amp;quot;. However, this is not mandatory (because it is an optional parameter w/o &amp;quot;req-&amp;quot;), so if the wallet app sends amount and tip to the main address, the merchant shall still be able to figure this out.&lt;br /&gt;
&lt;br /&gt;
If the merchant cannot handle tips sent to the same address as the billing amount, he shall instead make use of this parameter:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&#039;&#039;&#039;reqtipaddrparam = &amp;quot;req-tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the wallet app is guaranteed to send the tip to the separate address, or will otherwise reject the complete URI. Upon rejection, the waiter knows that the customer has a non-compliant wallet app and can start a second try showing the URI without any tip parameters (or with &amp;quot;tip=0&amp;quot;). The tip can then be paid in a separate transaction (or classically by cash).&lt;br /&gt;
&lt;br /&gt;
== Short parameter tags yielding shorter URIs for QR codes ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 10 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Another proposal: Allow short forms for the parameter tags, to shorten the URIs.&lt;br /&gt;
&lt;br /&gt;
This is not important for URIs when used in links on web pages, but it can become relevant when generating QR codes. The longer the URI, the more difficult it will be to scan and decode the QR code by a smartphone due to smaller QR code block size or lower error protection level.&lt;br /&gt;
&lt;br /&gt;
Hence a simple table of equivalent ALIASES is proposed, to shorten the URI:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Parameter Tag       Alias&#039;&#039;&#039;&lt;br /&gt;
 amount=             a=&lt;br /&gt;
 label=              l=&lt;br /&gt;
 message=            m=&lt;br /&gt;
 tip=                t=&lt;br /&gt;
 tipaddr=            i=&lt;br /&gt;
 req-                -&lt;br /&gt;
 req-tipaddr=        -i=&lt;br /&gt;
&lt;br /&gt;
Hence, for example the following URIs are fully equivalent:&lt;br /&gt;
&lt;br /&gt;
155 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;amp;tip=15%25&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;message=Thank%20You&amp;amp;label=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
128 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?a=.567&amp;amp;t=15%25&amp;amp;-i=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;m=Thank%20You&amp;amp;l=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40910</id>
		<title>Talk:BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40910"/>
		<updated>2013-09-09T01:14:55Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Further enhancement for paying tips in restaurant/bar: &amp;quot;tip address&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marian on IRC reports: &amp;quot;The BNF [here] is erroneous, regarding the params, it says [ &amp;quot;?&amp;quot; bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters&amp;quot;. --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; ([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013) So should it rather be written something like this (I am not a BNF expert, just following my logic):&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparam [ bitcoinparams ] ]&lt;br /&gt;
 bitcoinparams   = *bitcoinparamamp&lt;br /&gt;
 bitcoinparamamp = &amp;quot;&amp;amp;&amp;quot; bitcoinparam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently (&amp;quot;tips w/o taps&amp;quot;) ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.&lt;br /&gt;
&lt;br /&gt;
When watching bitpay&#039;s mobile checkout demo video &amp;quot;http://www.youtube.com/watch?v=YZ-pqo0cLcE&amp;quot; it is clear that paying tips is somewhat cumbersome for the customer with today&#039;s wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;Enhancement proposal&#039;&#039;&#039;&amp;lt;/span&amp;gt;:&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Actually, &amp;quot;tipparam&amp;quot; is just a special case of &amp;quot;otherparam&amp;quot;, hence completely downwards compatible.&lt;br /&gt;
&lt;br /&gt;
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer&#039;s wallet app.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039; for the following scenario:&lt;br /&gt;
:Request 0.567 BTC from the customer of a restaurant and make the customer&#039;s bitcoin app show an advanced send dialog that allows adding a tip:&lt;br /&gt;
&lt;br /&gt;
Ex. 1a) The pre-set tip value in the send dialog is undefined (user must specify) or set to the client&#039;s pre-configured default tip value:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 1b) The pre-set tip value in the send dialog is explicitly set to zero (this restaurant is on &amp;quot;service charge included in &#039;amount&#039;&amp;quot; policy and informs the client about this explicitly by &amp;quot;tip=0&amp;quot; in the URI):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0.08505&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [URI code of the percentage character is &amp;quot;%25&amp;quot;]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [&amp;quot;lazy&amp;quot; notation, omitting the &amp;quot;25&amp;quot;. Actually, this is NOT correct, not URI compliant (RFC 2396), hence such an URI&lt;br /&gt;
   should not be generated. But it is proposed that the wallet app that has to decode the URI is implemented to understand&lt;br /&gt;
   this &amp;quot;lazy&amp;quot; syntax in the &amp;quot;tip&amp;quot; field anyhow, as safeguard to avoid errors in case that the merchant app generates such&lt;br /&gt;
   a &amp;quot;lazy&amp;quot; URI]&lt;br /&gt;
&lt;br /&gt;
Ex. 3) The pre-set tip value is 0.08508 BTC, and the &amp;quot;notes&amp;quot; field in the client app is pre-occupied with the name of the restaurant:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;amp;message=Charly%27s%20Bar&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* The new parameter has no &amp;quot;req-&amp;quot; prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.&lt;br /&gt;
* Otherwise, the customer&#039;s bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.&lt;br /&gt;
&lt;br /&gt;
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipON_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Further enhancement for paying tips in restaurant/bar: &amp;quot;tip address&amp;quot; ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 9 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Further enhancement: Sending billing amount and tip to separate addresses:&lt;br /&gt;
&lt;br /&gt;
(Note: This feature is typically invisible in the GUI of the customer&#039;s wallet app)&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam   = &amp;quot;tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&amp;amp;tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;tipaddr&amp;quot; parameter specifies that if the wallet app sends a tip in addition to the &amp;quot;amount&amp;quot;, it shall &#039;&#039;&#039;&#039;&#039;preferably&#039;&#039;&#039;&#039;&#039; send it to the specifed &amp;quot;tip address&amp;quot;. However, this is not mandatory (because it is an optional parameter w/o &amp;quot;req-&amp;quot;), so if the wallet app sends amount and tip to the main address, the merchant shall still be able to figure this out.&lt;br /&gt;
&lt;br /&gt;
If the merchant cannot handle tips sent to the same address as the billing amount, he shall instead make use of this parameter:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&#039;&#039;&#039;reqtipaddrparam = &amp;quot;req-tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the wallet app is guaranteed to send the tip to the separate address, or will otherwise reject the complete URI. Upon rejection, the waiter knows that the customer has a non-compliant wallet app and can start a second try showing the URI without any tip parameters (or with &amp;quot;tip=0&amp;quot;). The tip can then be paid in a separate transaction (or classically by cash).&lt;br /&gt;
&lt;br /&gt;
== Short parameter tags yielding shorter URIs for QR codes ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 10 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Another proposal: Allow short forms for the parameter tags, to shorten the URIs.&lt;br /&gt;
&lt;br /&gt;
This is not important for URIs when used in links on web pages, but it can become relevant when generating QR codes. The longer the URI, the more difficult it will be to scan and decode the QR code by a smartphone due to smaller QR code block size or lower error protection level.&lt;br /&gt;
&lt;br /&gt;
Hence a simple table of equivalent ALIASES is proposed, to shorten the URI:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Parameter Tag       Alias&#039;&#039;&#039;&lt;br /&gt;
 amount=             a=&lt;br /&gt;
 label=              l=&lt;br /&gt;
 message=            m=&lt;br /&gt;
 tip=                t=&lt;br /&gt;
 tipaddr=            i=&lt;br /&gt;
 req-                -&lt;br /&gt;
 req-tipaddr=        -i=&lt;br /&gt;
&lt;br /&gt;
Hence, for example the following URIs are fully equivalent:&lt;br /&gt;
&lt;br /&gt;
155 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;amp;tip=15%25&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;message=Thank%20You&amp;amp;label=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
128 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?a=.567&amp;amp;t=15%25&amp;amp;-i=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;m=Thank%20You&amp;amp;l=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40909</id>
		<title>Talk:BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40909"/>
		<updated>2013-09-09T01:12:48Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Further enhancement for paying tips in restaurant/bar: &amp;quot;tip address&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marian on IRC reports: &amp;quot;The BNF [here] is erroneous, regarding the params, it says [ &amp;quot;?&amp;quot; bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters&amp;quot;. --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; ([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013) So should it rather be written something like this (I am not a BNF expert, just following my logic):&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparam [ bitcoinparams ] ]&lt;br /&gt;
 bitcoinparams   = *bitcoinparamamp&lt;br /&gt;
 bitcoinparamamp = &amp;quot;&amp;amp;&amp;quot; bitcoinparam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently (&amp;quot;tips w/o taps&amp;quot;) ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.&lt;br /&gt;
&lt;br /&gt;
When watching bitpay&#039;s mobile checkout demo video &amp;quot;http://www.youtube.com/watch?v=YZ-pqo0cLcE&amp;quot; it is clear that paying tips is somewhat cumbersome for the customer with today&#039;s wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;Enhancement proposal&#039;&#039;&#039;&amp;lt;/span&amp;gt;:&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Actually, &amp;quot;tipparam&amp;quot; is just a special case of &amp;quot;otherparam&amp;quot;, hence completely downwards compatible.&lt;br /&gt;
&lt;br /&gt;
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer&#039;s wallet app.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039; for the following scenario:&lt;br /&gt;
:Request 0.567 BTC from the customer of a restaurant and make the customer&#039;s bitcoin app show an advanced send dialog that allows adding a tip:&lt;br /&gt;
&lt;br /&gt;
Ex. 1a) The pre-set tip value in the send dialog is undefined (user must specify) or set to the client&#039;s pre-configured default tip value:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 1b) The pre-set tip value in the send dialog is explicitly set to zero (this restaurant is on &amp;quot;service charge included in &#039;amount&#039;&amp;quot; policy and informs the client about this explicitly by &amp;quot;tip=0&amp;quot; in the URI):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0.08505&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [URI code of the percentage character is &amp;quot;%25&amp;quot;]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [&amp;quot;lazy&amp;quot; notation, omitting the &amp;quot;25&amp;quot;. Actually, this is NOT correct, not URI compliant (RFC 2396), hence such an URI&lt;br /&gt;
   should not be generated. But it is proposed that the wallet app that has to decode the URI is implemented to understand&lt;br /&gt;
   this &amp;quot;lazy&amp;quot; syntax in the &amp;quot;tip&amp;quot; field anyhow, as safeguard to avoid errors in case that the merchant app generates such&lt;br /&gt;
   a &amp;quot;lazy&amp;quot; URI]&lt;br /&gt;
&lt;br /&gt;
Ex. 3) The pre-set tip value is 0.08508 BTC, and the &amp;quot;notes&amp;quot; field in the client app is pre-occupied with the name of the restaurant:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;amp;message=Charly%27s%20Bar&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* The new parameter has no &amp;quot;req-&amp;quot; prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.&lt;br /&gt;
* Otherwise, the customer&#039;s bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.&lt;br /&gt;
&lt;br /&gt;
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipON_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Further enhancement for paying tips in restaurant/bar: &amp;quot;tip address&amp;quot; ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 9 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Further enhancement: Sending billing amount and tip to separate addresses:&lt;br /&gt;
&lt;br /&gt;
(Note: This feature is typically invisible in the GUI of the customer&#039;s wallet app)&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam   = &amp;quot;tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&amp;amp;tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;tipaddr&amp;quot; parameter specifies that if the wallet app sends a tip in addition to the &amp;quot;amount&amp;quot;, it shall &#039;&#039;&#039;&#039;&#039;preferably&#039;&#039;&#039;&#039;&#039; send it to the specifed &amp;quot;tip address&amp;quot;. However, this is not mandatory (because it is an optional parameter w/o &amp;quot;req-&amp;quot;), so if the wallet app sends amount and tip to the main address, the merchant shall still be able to figure this out.&lt;br /&gt;
&lt;br /&gt;
If the merchant cannot handle tips sent to the same address as the billing amount, he shall instead make use of this parameter:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&#039;&#039;&#039;reqtipaddrparam = &amp;quot;req-tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the wallet app is guaranteed to send the tip to the separate address, or will otherwise reject the complete URI. Upon rejection, the waiter knows that the customer has a non-compliant wallet app and can start a second try showing the URI without any tip parameters (or with &amp;quot;tip=0&amp;quot;. The tip can then be paid in a separate transaction (or classically by cash).&lt;br /&gt;
&lt;br /&gt;
== Short parameter tags yielding shorter URIs for QR codes ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 10 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Another proposal: Allow short forms for the parameter tags, to shorten the URIs.&lt;br /&gt;
&lt;br /&gt;
This is not important for URIs when used in links on web pages, but it can become relevant when generating QR codes. The longer the URI, the more difficult it will be to scan and decode the QR code by a smartphone due to smaller QR code block size or lower error protection level.&lt;br /&gt;
&lt;br /&gt;
Hence a simple table of equivalent ALIASES is proposed, to shorten the URI:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Parameter Tag       Alias&#039;&#039;&#039;&lt;br /&gt;
 amount=             a=&lt;br /&gt;
 label=              l=&lt;br /&gt;
 message=            m=&lt;br /&gt;
 tip=                t=&lt;br /&gt;
 tipaddr=            i=&lt;br /&gt;
 req-                -&lt;br /&gt;
 req-tipaddr=        -i=&lt;br /&gt;
&lt;br /&gt;
Hence, for example the following URIs are fully equivalent:&lt;br /&gt;
&lt;br /&gt;
155 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;amp;tip=15%25&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;message=Thank%20You&amp;amp;label=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
128 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?a=.567&amp;amp;t=15%25&amp;amp;-i=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;m=Thank%20You&amp;amp;l=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40908</id>
		<title>Talk:BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40908"/>
		<updated>2013-09-09T01:07:54Z</updated>

		<summary type="html">&lt;p&gt;Michael S: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marian on IRC reports: &amp;quot;The BNF [here] is erroneous, regarding the params, it says [ &amp;quot;?&amp;quot; bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters&amp;quot;. --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; ([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013) So should it rather be written something like this (I am not a BNF expert, just following my logic):&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparam [ bitcoinparams ] ]&lt;br /&gt;
 bitcoinparams   = *bitcoinparamamp&lt;br /&gt;
 bitcoinparamamp = &amp;quot;&amp;amp;&amp;quot; bitcoinparam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently (&amp;quot;tips w/o taps&amp;quot;) ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.&lt;br /&gt;
&lt;br /&gt;
When watching bitpay&#039;s mobile checkout demo video &amp;quot;http://www.youtube.com/watch?v=YZ-pqo0cLcE&amp;quot; it is clear that paying tips is somewhat cumbersome for the customer with today&#039;s wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;Enhancement proposal&#039;&#039;&#039;&amp;lt;/span&amp;gt;:&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Actually, &amp;quot;tipparam&amp;quot; is just a special case of &amp;quot;otherparam&amp;quot;, hence completely downwards compatible.&lt;br /&gt;
&lt;br /&gt;
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer&#039;s wallet app.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039; for the following scenario:&lt;br /&gt;
:Request 0.567 BTC from the customer of a restaurant and make the customer&#039;s bitcoin app show an advanced send dialog that allows adding a tip:&lt;br /&gt;
&lt;br /&gt;
Ex. 1a) The pre-set tip value in the send dialog is undefined (user must specify) or set to the client&#039;s pre-configured default tip value:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 1b) The pre-set tip value in the send dialog is explicitly set to zero (this restaurant is on &amp;quot;service charge included in &#039;amount&#039;&amp;quot; policy and informs the client about this explicitly by &amp;quot;tip=0&amp;quot; in the URI):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0.08505&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [URI code of the percentage character is &amp;quot;%25&amp;quot;]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [&amp;quot;lazy&amp;quot; notation, omitting the &amp;quot;25&amp;quot;. Actually, this is NOT correct, not URI compliant (RFC 2396), hence such an URI&lt;br /&gt;
   should not be generated. But it is proposed that the wallet app that has to decode the URI is implemented to understand&lt;br /&gt;
   this &amp;quot;lazy&amp;quot; syntax in the &amp;quot;tip&amp;quot; field anyhow, as safeguard to avoid errors in case that the merchant app generates such&lt;br /&gt;
   a &amp;quot;lazy&amp;quot; URI]&lt;br /&gt;
&lt;br /&gt;
Ex. 3) The pre-set tip value is 0.08508 BTC, and the &amp;quot;notes&amp;quot; field in the client app is pre-occupied with the name of the restaurant:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;amp;message=Charly%27s%20Bar&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* The new parameter has no &amp;quot;req-&amp;quot; prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.&lt;br /&gt;
* Otherwise, the customer&#039;s bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.&lt;br /&gt;
&lt;br /&gt;
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipON_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Further enhancement for paying tips in restaurant/bar: &amp;quot;tip address&amp;quot; ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 9 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Further enhancement: Sending amount and tip to separate addresses:&lt;br /&gt;
&lt;br /&gt;
(Note: This feature is typically invisible in the GUI of the customer&#039;s wallet app)&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam   = &amp;quot;tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&amp;amp;tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;tipaddr&amp;quot; parameter specifies that if the wallet app sends a tip in addition to the &amp;quot;amount&amp;quot;, it shall &#039;&#039;&#039;&#039;&#039;preferably&#039;&#039;&#039;&#039;&#039; send it to the specifed &amp;quot;tip address&amp;quot;. However, this is not mandatory (because it is an optional parameter w/o &amp;quot;req-&amp;quot;), so if the wallet app sends amount and tip to the main address, the merchant shall still be able to figure this out.&lt;br /&gt;
&lt;br /&gt;
If the merchant cannot handle tips sent to the same address as the billing amount, he shall instead make use of this parameter:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&#039;&#039;&#039;reqtipaddrparam = &amp;quot;req-tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the wallet app is guaranteed to send the tip to the separate address, or will otherwise reject the complete URI. Upon rejection, the waiter knows that the customer has a non-compliant wallet app and can start a second try showing the URI without any tip parameters (or with &amp;quot;tip=0&amp;quot;. The tip can then be paid in a separate transaction (or classically by cash).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Short parameter tags yielding shorter URIs for QR codes ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 10 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Another proposal: Allow short forms for the parameter tags, to shorten the URIs.&lt;br /&gt;
&lt;br /&gt;
This is not important for URIs when used in links on web pages, but it can become relevant when generating QR codes. The longer the URI, the more difficult it will be to scan and decode the QR code by a smartphone due to smaller QR code block size or lower error protection level.&lt;br /&gt;
&lt;br /&gt;
Hence a simple table of equivalent ALIASES is proposed, to shorten the URI:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Parameter Tag       Alias&#039;&#039;&#039;&lt;br /&gt;
 amount=             a=&lt;br /&gt;
 label=              l=&lt;br /&gt;
 message=            m=&lt;br /&gt;
 tip=                t=&lt;br /&gt;
 tipaddr=            i=&lt;br /&gt;
 req-                -&lt;br /&gt;
 req-tipaddr=        -i=&lt;br /&gt;
&lt;br /&gt;
Hence, for example the following URIs are fully equivalent:&lt;br /&gt;
&lt;br /&gt;
155 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;amp;tip=15%25&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;message=Thank%20You&amp;amp;label=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
128 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?a=.567&amp;amp;t=15%25&amp;amp;-i=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;m=Thank%20You&amp;amp;l=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40907</id>
		<title>Talk:BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40907"/>
		<updated>2013-09-09T01:05:15Z</updated>

		<summary type="html">&lt;p&gt;Michael S: Additional section: Short Aliases for Parameter Tags (making shorter URIs for QR codes)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marian on IRC reports: &amp;quot;The BNF [here] is erroneous, regarding the params, it says [ &amp;quot;?&amp;quot; bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters&amp;quot;. --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; ([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013) So should it rather be written something like this (I am not a BNF expert, just following my logic):&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparam [ bitcoinparams ] ]&lt;br /&gt;
 bitcoinparams   = *bitcoinparamamp&lt;br /&gt;
 bitcoinparamamp = &amp;quot;&amp;amp;&amp;quot; bitcoinparam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently (&amp;quot;tips w/o taps&amp;quot;) ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.&lt;br /&gt;
&lt;br /&gt;
When watching bitpay&#039;s mobile checkout demo video &amp;quot;http://www.youtube.com/watch?v=YZ-pqo0cLcE&amp;quot; it is clear that paying tips is somewhat cumbersome for the customer with today&#039;s wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;Enhancement proposal&#039;&#039;&#039;&amp;lt;/span&amp;gt;:&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Actually, &amp;quot;tipparam&amp;quot; is just a special case of &amp;quot;otherparam&amp;quot;, hence completely downwards compatible.&lt;br /&gt;
&lt;br /&gt;
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer&#039;s wallet app.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039; for the following scenario:&lt;br /&gt;
:Request 0.567 BTC from the customer of a restaurant and make the customer&#039;s bitcoin app show an advanced send dialog that allows adding a tip:&lt;br /&gt;
&lt;br /&gt;
Ex. 1a) The pre-set tip value in the send dialog is undefined (user must specify) or set to the client&#039;s pre-configured default tip value:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 1b) The pre-set tip value in the send dialog is explicitly set to zero (this restaurant is on &amp;quot;service charge included in &#039;amount&#039;&amp;quot; policy and informs the client about this explicitly by &amp;quot;tip=0&amp;quot; in the URI):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0.08505&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [URI code of the percentage character is &amp;quot;%25&amp;quot;]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [&amp;quot;lazy&amp;quot; notation, omitting the &amp;quot;25&amp;quot;. Actually, this is NOT correct, not URI compliant (RFC 2396), hence such an URI&lt;br /&gt;
   should not be generated. But it is proposed that the wallet app that has to decode the URI is implemented to understand&lt;br /&gt;
   this &amp;quot;lazy&amp;quot; syntax in the &amp;quot;tip&amp;quot; field anyhow, as safeguard to avoid errors in case that the merchant app generates such&lt;br /&gt;
   a &amp;quot;lazy&amp;quot; URI]&lt;br /&gt;
&lt;br /&gt;
Ex. 3) The pre-set tip value is 0.08508 BTC, and the &amp;quot;notes&amp;quot; field in the client app is pre-occupied with the name of the restaurant:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;amp;message=Charly%27s%20Bar&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* The new parameter has no &amp;quot;req-&amp;quot; prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.&lt;br /&gt;
* Otherwise, the customer&#039;s bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.&lt;br /&gt;
&lt;br /&gt;
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipON_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Further enhancement for paying tips in restaurant/bar: &amp;quot;tip address&amp;quot; ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 9 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Further enhancement: Sending amount and tip to separate addresses:&lt;br /&gt;
&lt;br /&gt;
(Note: This feature is typically invisible in the GUI of the customer&#039;s wallet app)&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam   = &amp;quot;tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&amp;amp;tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;tipaddr&amp;quot; parameter specifies that if the wallet app sends a tip in addition to the &amp;quot;amount&amp;quot;, it shall &#039;&#039;&#039;&#039;&#039;preferably&#039;&#039;&#039;&#039;&#039; send it to the specifed &amp;quot;tip address&amp;quot;. However, this is not mandatory (because it is an optional parameter w/o &amp;quot;req-&amp;quot;), so if the wallet app sends amount and tip to the main address, the merchant shall still be able to figure this out.&lt;br /&gt;
&lt;br /&gt;
If the merchant cannot handle tips sent to the same address as the billing amount, he shall instead make use of this parameter:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&#039;&#039;&#039;reqtipaddrparam = &amp;quot;req-tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the wallet app is guaranteed to send the tip to the separate address, or will otherwise reject the complete URI. Upon rejection, the waiter knows that the customer has a non-compliant wallet app and can start a second try showing the URI without any tip parameters (or with &amp;quot;tip=0&amp;quot;. The tip can then be paid in a separate transaction (or classically by cash).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Short parameter tags yielding shorter URIs for QR codes ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 10 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Another proposal: Allow short forms for the parameter tags, to shorten the URIs.&lt;br /&gt;
&lt;br /&gt;
This is not important for URIs when used in links on web pages, but it can become relevant when generating QR codes. The longer the URI, the more difficult it will be to scan and decode the QR code by a smartphone due to smaller QR code block size or lower error protection level.&lt;br /&gt;
&lt;br /&gt;
Hence a simple table of equivalent ALIASES is proposed, to shorten the URI:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Parameter Tag       Alias&#039;&#039;&#039;&lt;br /&gt;
 amount=             a=&lt;br /&gt;
 label=              l=&lt;br /&gt;
 message=            m=&lt;br /&gt;
 tip=                t=&lt;br /&gt;
 tipaddr=            i=&lt;br /&gt;
 req-                -&lt;br /&gt;
 req-tipaddr=        -i=&lt;br /&gt;
&lt;br /&gt;
Hence, for example the following URIs are fully equivalent:&lt;br /&gt;
&lt;br /&gt;
151 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;amp;tip=15%25&amp;amp;tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;message=Thank%20You&amp;amp;label=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
127 characters:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?a=.567&amp;amp;t=15%25&amp;amp;i=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&amp;amp;m=Thank%20You&amp;amp;l=Charly%27s%20Bar&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40897</id>
		<title>Talk:BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40897"/>
		<updated>2013-09-08T22:56:14Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Further enhancement for paying tips in restaurant/bar: &amp;quot;tip address&amp;quot; */ added &amp;quot;tipaddrparam&amp;quot; to bitcoinparam list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marian on IRC reports: &amp;quot;The BNF [here] is erroneous, regarding the params, it says [ &amp;quot;?&amp;quot; bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters&amp;quot;. --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; ([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013) So should it rather be written something like this (I am not a BNF expert, just following my logic):&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparam [ bitcoinparams ] ]&lt;br /&gt;
 bitcoinparams   = *bitcoinparamamp&lt;br /&gt;
 bitcoinparamamp = &amp;quot;&amp;amp;&amp;quot; bitcoinparam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently (&amp;quot;tips w/o taps&amp;quot;) ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.&lt;br /&gt;
&lt;br /&gt;
When watching bitpay&#039;s mobile checkout demo video &amp;quot;http://www.youtube.com/watch?v=YZ-pqo0cLcE&amp;quot; it is clear that paying tips is somewhat cumbersome for the customer with today&#039;s wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;Enhancement proposal&#039;&#039;&#039;&amp;lt;/span&amp;gt;:&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Actually, &amp;quot;tipparam&amp;quot; is just a special case of &amp;quot;otherparam&amp;quot;, hence completely downwards compatible.&lt;br /&gt;
&lt;br /&gt;
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer&#039;s wallet app.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039; for the following scenario:&lt;br /&gt;
:Request 0.567 BTC from the customer of a restaurant and make the customer&#039;s bitcoin app show an advanced send dialog that allows adding a tip:&lt;br /&gt;
&lt;br /&gt;
Ex. 1a) The pre-set tip value in the send dialog is undefined (user must specify) or set to the client&#039;s pre-configured default tip value:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 1b) The pre-set tip value in the send dialog is explicitly set to zero (this restaurant is on &amp;quot;service charge included in &#039;amount&#039;&amp;quot; policy and informs the client about this explicitly by &amp;quot;tip=0&amp;quot; in the URI):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0.08505&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [URI code of the percentage character is &amp;quot;%25&amp;quot;]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [&amp;quot;lazy&amp;quot; notation, omitting the &amp;quot;25&amp;quot;. Actually, this is NOT correct, not URI compliant (RFC 2396), hence such an URI&lt;br /&gt;
   should not be generated. But it is proposed that the wallet app that has to decode the URI is implemented to understand&lt;br /&gt;
   this &amp;quot;lazy&amp;quot; syntax in the &amp;quot;tip&amp;quot; field anyhow, as safeguard to avoid errors in case that the merchant app generates such&lt;br /&gt;
   a &amp;quot;lazy&amp;quot; URI]&lt;br /&gt;
&lt;br /&gt;
Ex. 3) The pre-set tip value is 0.08508 BTC, and the &amp;quot;notes&amp;quot; field in the client app is pre-occupied with the name of the restaurant:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;amp;message=Charly%27s%20Bar&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* The new parameter has no &amp;quot;req-&amp;quot; prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.&lt;br /&gt;
* Otherwise, the customer&#039;s bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.&lt;br /&gt;
&lt;br /&gt;
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipON_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Further enhancement for paying tips in restaurant/bar: &amp;quot;tip address&amp;quot; ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 9 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Further enhancement: Sending amount and tip to separate addresses:&lt;br /&gt;
&lt;br /&gt;
(Note: This feature is typically invisible in the GUI of the customer&#039;s wallet app)&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam   = &amp;quot;tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&amp;amp;tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;tipaddr&amp;quot; parameter specifies that if the wallet app sends a tip in addition to the &amp;quot;amount&amp;quot;, it shall &#039;&#039;&#039;&#039;&#039;preferably&#039;&#039;&#039;&#039;&#039; send it to the specifed &amp;quot;tip address&amp;quot;. However, this is not mandatory (because it is an optional parameter w/o &amp;quot;req-&amp;quot;), so if the wallet app sends amount and tip to the main address, the merchant shall still be able to figure this out.&lt;br /&gt;
&lt;br /&gt;
If the merchant cannot handle tips sent to the same address as the billing amount, he shall instead make use of this parameter:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&#039;&#039;&#039;reqtipaddrparam = &amp;quot;req-tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the wallet app is guaranteed to send the tip to the separate address, or will otherwise reject the complete URI. Upon rejection, the waiter knows that the customer has a non-compliant wallet app and can start a second try showing the URI without any tip parameters (or with &amp;quot;tip=0&amp;quot;. The tip can then be paid in a separate transaction (or classically by cash).&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40896</id>
		<title>Talk:BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40896"/>
		<updated>2013-09-08T22:12:13Z</updated>

		<summary type="html">&lt;p&gt;Michael S: Adding further section about &amp;quot;tipaddr&amp;quot; and &amp;quot;req-tipaddr&amp;quot; parameters&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marian on IRC reports: &amp;quot;The BNF [here] is erroneous, regarding the params, it says [ &amp;quot;?&amp;quot; bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters&amp;quot;. --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; ([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013) So should it rather be written something like this (I am not a BNF expert, just following my logic):&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparam [ bitcoinparams ] ]&lt;br /&gt;
 bitcoinparams   = *bitcoinparamamp&lt;br /&gt;
 bitcoinparamamp = &amp;quot;&amp;amp;&amp;quot; bitcoinparam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently (&amp;quot;tips w/o taps&amp;quot;) ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.&lt;br /&gt;
&lt;br /&gt;
When watching bitpay&#039;s mobile checkout demo video &amp;quot;http://www.youtube.com/watch?v=YZ-pqo0cLcE&amp;quot; it is clear that paying tips is somewhat cumbersome for the customer with today&#039;s wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;Enhancement proposal&#039;&#039;&#039;&amp;lt;/span&amp;gt;:&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Actually, &amp;quot;tipparam&amp;quot; is just a special case of &amp;quot;otherparam&amp;quot;, hence completely downwards compatible.&lt;br /&gt;
&lt;br /&gt;
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer&#039;s wallet app.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039; for the following scenario:&lt;br /&gt;
:Request 0.567 BTC from the customer of a restaurant and make the customer&#039;s bitcoin app show an advanced send dialog that allows adding a tip:&lt;br /&gt;
&lt;br /&gt;
Ex. 1a) The pre-set tip value in the send dialog is undefined (user must specify) or set to the client&#039;s pre-configured default tip value:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 1b) The pre-set tip value in the send dialog is explicitly set to zero (this restaurant is on &amp;quot;service charge included in &#039;amount&#039;&amp;quot; policy and informs the client about this explicitly by &amp;quot;tip=0&amp;quot; in the URI):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0.08505&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [URI code of the percentage character is &amp;quot;%25&amp;quot;]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [&amp;quot;lazy&amp;quot; notation, omitting the &amp;quot;25&amp;quot;. Actually, this is NOT correct, not URI compliant (RFC 2396), hence such an URI&lt;br /&gt;
   should not be generated. But it is proposed that the wallet app that has to decode the URI is implemented to understand&lt;br /&gt;
   this &amp;quot;lazy&amp;quot; syntax in the &amp;quot;tip&amp;quot; field anyhow, as safeguard to avoid errors in case that the merchant app generates such&lt;br /&gt;
   a &amp;quot;lazy&amp;quot; URI]&lt;br /&gt;
&lt;br /&gt;
Ex. 3) The pre-set tip value is 0.08508 BTC, and the &amp;quot;notes&amp;quot; field in the client app is pre-occupied with the name of the restaurant:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;amp;message=Charly%27s%20Bar&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* The new parameter has no &amp;quot;req-&amp;quot; prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.&lt;br /&gt;
* Otherwise, the customer&#039;s bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.&lt;br /&gt;
&lt;br /&gt;
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipON_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Further enhancement for paying tips in restaurant/bar: &amp;quot;tip address&amp;quot; ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 9 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
Further enhancement: Sending amount and tip to separate addresses:&lt;br /&gt;
&lt;br /&gt;
(Note: This feature is typically invisible in the GUI of the customer&#039;s wallet app)&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&#039;&#039;&#039;tipaddrparam   = &amp;quot;tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#E20074&amp;quot;&amp;gt;&amp;amp;tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;tipaddr&amp;quot; parameter specifies that if the wallet app sends a tip in addition to the &amp;quot;amount&amp;quot;, it shall &#039;&#039;&#039;&#039;&#039;preferably&#039;&#039;&#039;&#039;&#039; send it to the specifed &amp;quot;tip address&amp;quot;. However, this is not mandatory (because it is an optional parameter w/o &amp;quot;req-&amp;quot;), so if the wallet app sends amount and tip to the main address, the merchant shall still be able to figure this out.&lt;br /&gt;
&lt;br /&gt;
If the merchant cannot handle tips sent to the same address as the billing amount, he shall instead make use of this parameter:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&#039;&#039;&#039;reqtipaddrparam = &amp;quot;req-tipaddr=&amp;quot; bitcoinaddress&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#a20024&amp;quot;&amp;gt;&amp;amp;req-tipaddr=1waiter7b38klseWrTZm5sE8PrrupPB2Q2&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the wallet app is guaranteed to send the tip to the separate address, or will otherwise reject the complete URI. Upon rejection, the waiter knows that the customer has a non-compliant wallet app and can start a second try showing the URI without any tip parameters (or with &amp;quot;tip=0&amp;quot;. The tip can then be paid in a separate transaction (or classically by cash).&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40895</id>
		<title>Talk:BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40895"/>
		<updated>2013-09-08T21:03:29Z</updated>

		<summary type="html">&lt;p&gt;Michael S: clarified difference of &amp;quot;tip=&amp;quot; vs. &amp;quot;tip=0&amp;quot; (&amp;quot;tip undefined&amp;quot; vs. &amp;quot;service included no tip expected&amp;quot;)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marian on IRC reports: &amp;quot;The BNF [here] is erroneous, regarding the params, it says [ &amp;quot;?&amp;quot; bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters&amp;quot;. --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; ([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013) So should it rather be written something like this (I am not a BNF expert, just following my logic):&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparam [ bitcoinparams ] ]&lt;br /&gt;
 bitcoinparams   = *bitcoinparamamp&lt;br /&gt;
 bitcoinparamamp = &amp;quot;&amp;amp;&amp;quot; bitcoinparam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.&lt;br /&gt;
&lt;br /&gt;
When watching bitpay&#039;s mobile checkout demo video &amp;quot;http://www.youtube.com/watch?v=YZ-pqo0cLcE&amp;quot; it is clear that paying tips is somewhat cumbersome for the customer with today&#039;s wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;Enhancement proposal&#039;&#039;&#039;&amp;lt;/span&amp;gt;:&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Actually, &amp;quot;tipparam&amp;quot; is just a special case of &amp;quot;otherparam&amp;quot;, hence completely downwards compatible.&lt;br /&gt;
&lt;br /&gt;
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer&#039;s wallet app.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039; for the following scenario:&lt;br /&gt;
:Request 0.567 BTC from the customer of a restaurant and make the customer&#039;s bitcoin app show an advanced send dialog that allows adding a tip:&lt;br /&gt;
&lt;br /&gt;
Ex. 1a) The pre-set tip value in the send dialog is undefined (user must specify) or set to the client&#039;s pre-configured default tip value:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 1b) The pre-set tip value in the send dialog is explicitly set to zero (this restaurant is on &amp;quot;service charge included in &#039;amount&#039;&amp;quot; policy and informs the client about this explicitly by &amp;quot;tip=0&amp;quot; in the URI):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0.08505&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [URI code of the percentage character is &amp;quot;%25&amp;quot;]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [&amp;quot;lazy&amp;quot; notation, omitting the &amp;quot;25&amp;quot;. Actually, this is NOT correct, not URI compliant (RFC 2396), hence such an URI&lt;br /&gt;
   should not be generated. But it is proposed that the wallet app that has to decode the URI is implemented to understand&lt;br /&gt;
   this &amp;quot;lazy&amp;quot; syntax in the &amp;quot;tip&amp;quot; field anyhow, as safeguard to avoid errors in case that the merchant app generates such&lt;br /&gt;
   a &amp;quot;lazy&amp;quot; URI]&lt;br /&gt;
&lt;br /&gt;
Ex. 3) The pre-set tip value is 0.08508 BTC, and the &amp;quot;notes&amp;quot; field in the client app is pre-occupied with the name of the restaurant:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;amp;message=Charly%27s%20Bar&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* The new parameter has no &amp;quot;req-&amp;quot; prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.&lt;br /&gt;
* Otherwise, the customer&#039;s bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.&lt;br /&gt;
&lt;br /&gt;
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipON_BIP_0021.png|border]]&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=User:Michael_S&amp;diff=40894</id>
		<title>User:Michael S</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=User:Michael_S&amp;diff=40894"/>
		<updated>2013-09-08T20:10:06Z</updated>

		<summary type="html">&lt;p&gt;Michael S: Created page with &amp;quot; -----BEGIN PGP SIGNED MESSAGE-----  Hash: SHA1    . . . . . . . . . . . . . . . . . . . . . . . . . . . .  I am the Michael_S known from &amp;quot;bitcointalk.org&amp;quot; forum.  . . . . . ....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; -----BEGIN PGP SIGNED MESSAGE-----&lt;br /&gt;
 Hash: SHA1&lt;br /&gt;
 &lt;br /&gt;
 . . . . . . . . . . . . . . . . . . . . . . . . . . . .&lt;br /&gt;
 I am the Michael_S known from &amp;quot;bitcointalk.org&amp;quot; forum.&lt;br /&gt;
 . . . . . . . . . . . . . . . . . . . . . . . . . . . .&lt;br /&gt;
 bitcoin:1MichaS16UMKFgNjanKrtfD51HpBkqPAwD&lt;br /&gt;
 . . . . . . . . . . . . . . . . . . . . . . . . . . . .&lt;br /&gt;
 -----BEGIN PGP SIGNATURE-----&lt;br /&gt;
 Version: GnuPG v1.4.6 (GNU/Linux)&lt;br /&gt;
 &lt;br /&gt;
 iD8DBQFSLNj13WH/l8x+fJkRAmffAKCt2LkQcnfCPmSCYFjJGLWOryDYKwCgtfHC&lt;br /&gt;
 1lt9RLNj5Y8ASkvI1yzL2fE=&lt;br /&gt;
 =e1S1&lt;br /&gt;
 -----END PGP SIGNATURE-----&lt;br /&gt;
&lt;br /&gt;
PGP Key 0xCC7E7C99&lt;br /&gt;
&lt;br /&gt;
http://pgp.mit.edu:11371/pks/lookup?search=0xCC7E7C99&amp;amp;op=index&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=40893</id>
		<title>Vanitygen</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=40893"/>
		<updated>2013-09-08T19:59:06Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Vanity addresses for other crypto-coins */ - typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vanitygen is a command-line vanity bitcoin address generator.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re tired of the random, cryptic addresses generated by regular bitcoin clients, you can use vanitygen to create a more personalized address.  Add unique flair when you tell people to send bitcoins to 1stDownqyMHHqnDPRSfiZ5GXJ8Gk9dbjL.  Alternatively, vanitygen can be used to generate random addresses offline.&lt;br /&gt;
&lt;br /&gt;
Vanitygen accepts as input a pattern, or list of patterns to search for, and produces a list of addresses and private keys.  Vanitygen&#039;s search is probabilistic, and the amount of time required to find a given pattern depends on how complex the pattern is, the speed of your computer, and whether you get lucky.&lt;br /&gt;
&lt;br /&gt;
The example below illustrates a session of vanitygen.  It is typical, and took about 10 sec to finish, using my Core 2 Duo E6600 CPU on x86-64 Linux:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./vanitygen 1Boat&lt;br /&gt;
Difficulty: 4476342&lt;br /&gt;
Pattern: 1Boat                                                                 &lt;br /&gt;
Address: 1BoatSLRHtKNngkdXEeobR76b53LETtpyT&lt;br /&gt;
Privkey: 5J4XJRyLVgzbXEgh8VNi4qovLzxRftzMd8a18KkdXv4EqAwX3tS&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vanitygen includes components to perform address searching on your CPU (vanitygen) and your OpenCL-compatible GPU (oclvanitygen).  Both can be built from source, and both are included in the Windows binary package.  Also included is oclvanityminer, the vanity address mining client.  Oclvanityminer can be used to automatically claim bounties on sites such as [[User:ThePiachu|ThePiachu]]&#039;s [[Vanity Pool]].&lt;br /&gt;
&lt;br /&gt;
Current version: 0.22&lt;br /&gt;
&lt;br /&gt;
Windows x86+x64 binaries [https://github.com/downloads/samr7/vanitygen/vanitygen-0.20-win.zip here].  PGP signature [http://insight.gotdns.org/~samr7/vanitygen-0.20-win.zip.asc here].&lt;br /&gt;
&lt;br /&gt;
Get the source from [https://github.com/samr7/vanitygen GitHub].  Includes Makefiles for Linux and Mac OS X.&lt;br /&gt;
&lt;br /&gt;
Main discussion at [https://bitcointalk.org/index.php?topic=25804.0 BitCoinTalk]&lt;br /&gt;
&lt;br /&gt;
== Expected keysearch rate ==&lt;br /&gt;
Main article: [[Vanitygen keysearch rate]]&lt;br /&gt;
&lt;br /&gt;
What key search rate can I expect from hardware X?&lt;br /&gt;
&lt;br /&gt;
Detailed list forthcoming.  Some ballpark estimates are listed below.&lt;br /&gt;
&lt;br /&gt;
 Dual-core desktop CPUs, 32-bit mode: 100-250 Kkey/s.&lt;br /&gt;
 Dual-core desktop CPUs, 64-bit mode: 150-450 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 32-bit mode: 200-400 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 64-bit mode: 300-750 Kkey/s.&lt;br /&gt;
 NVIDIA GT200 GPUs: up to 6.5 Mkey/s&lt;br /&gt;
 AMD Radeon 58XX, 68XX GPUs: up to 23.5 Mkey/s.&lt;br /&gt;
 AMD Radeon 69XX GPUs: up to 19.5 Mkey/s.&lt;br /&gt;
&lt;br /&gt;
As vanitygen performs a lot of large integer arithmetic, running it in 64-bit mode makes a huge difference in key search rate, easily a 50% improvement over 32-bit mode.  If you are using a 64-bit edition of Windows, and not using a GPU, be sure to use vanitygen64.exe.&lt;br /&gt;
&lt;br /&gt;
Radeon 58XX outperforms Radeon 69XX by a very comfortable margin.  Oclvanitygen is sensitive to integer multiply throughput, and Radeon 58XX can multiply concurrently with other operations.  At similar clocks, a hobbled Radeon 5830 will outperform a Radeon 6970.&lt;br /&gt;
&lt;br /&gt;
In custom builds, CPU performance will be less than expected if the OpenSSL library is an older version (&amp;lt;1.0.0d) or is not built with the appropriate optimizations enabled.&lt;br /&gt;
&lt;br /&gt;
== Vanity addresses for other crypto-coins ==&lt;br /&gt;
While all bitcoin addresses start with a &amp;quot;1&amp;quot; (one), some other crypto-coins use different address name spaces. Vanitygen (as of version 0.22) can be used to produce vanity addresses for these crypto coins as well (but not for [http://bitmessage.org bitmessage] addresses), by using the &amp;quot;-X&amp;quot; option. The following list provides some example command line calls and also indicates the address range for the respective coin:&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC), &#039;&#039;&#039;Devcoin&#039;&#039;&#039; (DVC), &#039;&#039;&#039;Freicoin&#039;&#039;&#039; (FRC), &#039;&#039;&#039;Terracoin&#039;&#039;&#039; (TRC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 0 1 -k&lt;br /&gt;
or simply just&lt;br /&gt;
 $ ./vanitygen 1 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Novacoin&#039;&#039;&#039; (NVC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 8 4 -k&lt;br /&gt;
 $ ./vanitygen -X 8 4D -k&lt;br /&gt;
 $ ./vanitygen -X 8 4Z -k&lt;br /&gt;
 $ ./vanitygen -X 8 4a -k&lt;br /&gt;
 $ ./vanitygen -X 8 4d -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Feathercoin&#039;&#039;&#039; (FTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 14 6 -k&lt;br /&gt;
 $ ./vanitygen -X 14 6d -k&lt;br /&gt;
 $ ./vanitygen -X 14 6z -k&lt;br /&gt;
 $ ./vanitygen -X 14 7 -k&lt;br /&gt;
 $ ./vanitygen -X 14 71 -k&lt;br /&gt;
 $ ./vanitygen -X 14 72 -k&lt;br /&gt;
 $ ./vanitygen -X 14 73 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Anoncoin&#039;&#039;&#039; (ANC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 23 A -k&lt;br /&gt;
 $ ./vanitygen -X 23 AF -k&lt;br /&gt;
 $ ./vanitygen -X 23 AZ -k&lt;br /&gt;
 $ ./vanitygen -X 23 Aa -k&lt;br /&gt;
 $ ./vanitygen -X 23 Af -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Chinacoin&#039;&#039;&#039; (CNC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 28 C -k&lt;br /&gt;
 $ ./vanitygen -X 28 CG -k&lt;br /&gt;
 $ ./vanitygen -X 28 CZ -k&lt;br /&gt;
 $ ./vanitygen -X 28 Ca -k&lt;br /&gt;
 $ ./vanitygen -X 28 Cf -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Digitalcoin&#039;&#039;&#039; (DGC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 30 D -k&lt;br /&gt;
 $ ./vanitygen -X 30 D5 -k&lt;br /&gt;
 $ ./vanitygen -X 30 D9 -k&lt;br /&gt;
 $ ./vanitygen -X 30 DA -k&lt;br /&gt;
 $ ./vanitygen -X 30 DU -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Litecoin&#039;&#039;&#039; (LTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 48 L -k&lt;br /&gt;
 $ ./vanitygen -X 48 LK -k&lt;br /&gt;
 $ ./vanitygen -X 48 LZ -k&lt;br /&gt;
 $ ./vanitygen -X 48 La -k&lt;br /&gt;
 $ ./vanitygen -X 48 Li -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Namecoin&#039;&#039;&#039; (NMC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 52 M -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mv -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mz -k&lt;br /&gt;
 $ ./vanitygen -X 52 N -k&lt;br /&gt;
 $ ./vanitygen -X 52 N1 -k&lt;br /&gt;
 $ ./vanitygen -X 52 N9 -k&lt;br /&gt;
 $ ./vanitygen -X 52 NA -k&lt;br /&gt;
 $ ./vanitygen -X 52 NK -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;PPCoin&#039;&#039;&#039; (PPC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 55 P -k&lt;br /&gt;
 $ ./vanitygen -X 55 P8 -k&lt;br /&gt;
 $ ./vanitygen -X 55 P9 -k&lt;br /&gt;
 $ ./vanitygen -X 55 PA -k&lt;br /&gt;
 $ ./vanitygen -X 55 PX -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;YaCoin&#039;&#039;&#039; (YAC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 77 X -k&lt;br /&gt;
 $ ./vanitygen -X 77 Xz -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y1 -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y9 -k&lt;br /&gt;
 $ ./vanitygen -X 77 YA -k&lt;br /&gt;
 $ ./vanitygen -X 77 YP -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;BBQcoin&#039;&#039;&#039; (BQC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 85 b -k&lt;br /&gt;
 $ ./vanitygen -X 85 bC -k&lt;br /&gt;
 $ ./vanitygen -X 85 bZ -k&lt;br /&gt;
 $ ./vanitygen -X 85 ba -k&lt;br /&gt;
 $ ./vanitygen -X 85 bc -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Ixcoin&#039;&#039;&#039; (IXC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 138 x -k&lt;br /&gt;
 $ ./vanitygen -X 138 xX -k&lt;br /&gt;
 $ ./vanitygen -X 138 xZ -k&lt;br /&gt;
 $ ./vanitygen -X 138 xa -k&lt;br /&gt;
 $ ./vanitygen -X 138 xv -k&lt;br /&gt;
&lt;br /&gt;
Generally, to find out the address format of a given crypto-coin (i.e. the number after the -X option of vanitygen) one can use this service:&lt;br /&gt;
    &amp;lt;nowiki&amp;gt;http://darkgamex.ch:2751/q/decode_address/&amp;lt;Address&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Example: Take any Litecoin address, e.g. &amp;quot;LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&amp;quot;, and submit this URL:&lt;br /&gt;
    http://darkgamex.ch:2751/q/decode_address/LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&lt;br /&gt;
The browser output will be:&lt;br /&gt;
    30:265dcf8616a9723d3b4ba35c246b041e20013597&lt;br /&gt;
The &#039;&#039;&#039;30&#039;&#039;&#039; is Litecoin&#039;s address format in hex (!), i.e. 30 (hex) = 48 (decimal), i.e. use &#039;&#039;&#039;-X 48&#039;&#039;&#039; in vanitygen to generate Liteoin addresses.&lt;br /&gt;
&lt;br /&gt;
Some related info here: https://en.bitcoin.it/wiki/List_of_address_prefixes&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Firstbits]]&lt;br /&gt;
* [[Bitcoin Vanity Generation Website]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Vanity address]]&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=40892</id>
		<title>Vanitygen</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Vanitygen&amp;diff=40892"/>
		<updated>2013-09-08T19:58:01Z</updated>

		<summary type="html">&lt;p&gt;Michael S: Added section: &amp;quot;Vanity addresses for other crypto-coins&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vanitygen is a command-line vanity bitcoin address generator.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re tired of the random, cryptic addresses generated by regular bitcoin clients, you can use vanitygen to create a more personalized address.  Add unique flair when you tell people to send bitcoins to 1stDownqyMHHqnDPRSfiZ5GXJ8Gk9dbjL.  Alternatively, vanitygen can be used to generate random addresses offline.&lt;br /&gt;
&lt;br /&gt;
Vanitygen accepts as input a pattern, or list of patterns to search for, and produces a list of addresses and private keys.  Vanitygen&#039;s search is probabilistic, and the amount of time required to find a given pattern depends on how complex the pattern is, the speed of your computer, and whether you get lucky.&lt;br /&gt;
&lt;br /&gt;
The example below illustrates a session of vanitygen.  It is typical, and took about 10 sec to finish, using my Core 2 Duo E6600 CPU on x86-64 Linux:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./vanitygen 1Boat&lt;br /&gt;
Difficulty: 4476342&lt;br /&gt;
Pattern: 1Boat                                                                 &lt;br /&gt;
Address: 1BoatSLRHtKNngkdXEeobR76b53LETtpyT&lt;br /&gt;
Privkey: 5J4XJRyLVgzbXEgh8VNi4qovLzxRftzMd8a18KkdXv4EqAwX3tS&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vanitygen includes components to perform address searching on your CPU (vanitygen) and your OpenCL-compatible GPU (oclvanitygen).  Both can be built from source, and both are included in the Windows binary package.  Also included is oclvanityminer, the vanity address mining client.  Oclvanityminer can be used to automatically claim bounties on sites such as [[User:ThePiachu|ThePiachu]]&#039;s [[Vanity Pool]].&lt;br /&gt;
&lt;br /&gt;
Current version: 0.22&lt;br /&gt;
&lt;br /&gt;
Windows x86+x64 binaries [https://github.com/downloads/samr7/vanitygen/vanitygen-0.20-win.zip here].  PGP signature [http://insight.gotdns.org/~samr7/vanitygen-0.20-win.zip.asc here].&lt;br /&gt;
&lt;br /&gt;
Get the source from [https://github.com/samr7/vanitygen GitHub].  Includes Makefiles for Linux and Mac OS X.&lt;br /&gt;
&lt;br /&gt;
Main discussion at [https://bitcointalk.org/index.php?topic=25804.0 BitCoinTalk]&lt;br /&gt;
&lt;br /&gt;
== Expected keysearch rate ==&lt;br /&gt;
Main article: [[Vanitygen keysearch rate]]&lt;br /&gt;
&lt;br /&gt;
What key search rate can I expect from hardware X?&lt;br /&gt;
&lt;br /&gt;
Detailed list forthcoming.  Some ballpark estimates are listed below.&lt;br /&gt;
&lt;br /&gt;
 Dual-core desktop CPUs, 32-bit mode: 100-250 Kkey/s.&lt;br /&gt;
 Dual-core desktop CPUs, 64-bit mode: 150-450 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 32-bit mode: 200-400 Kkey/s.&lt;br /&gt;
 Quad-core desktop CPUs, 64-bit mode: 300-750 Kkey/s.&lt;br /&gt;
 NVIDIA GT200 GPUs: up to 6.5 Mkey/s&lt;br /&gt;
 AMD Radeon 58XX, 68XX GPUs: up to 23.5 Mkey/s.&lt;br /&gt;
 AMD Radeon 69XX GPUs: up to 19.5 Mkey/s.&lt;br /&gt;
&lt;br /&gt;
As vanitygen performs a lot of large integer arithmetic, running it in 64-bit mode makes a huge difference in key search rate, easily a 50% improvement over 32-bit mode.  If you are using a 64-bit edition of Windows, and not using a GPU, be sure to use vanitygen64.exe.&lt;br /&gt;
&lt;br /&gt;
Radeon 58XX outperforms Radeon 69XX by a very comfortable margin.  Oclvanitygen is sensitive to integer multiply throughput, and Radeon 58XX can multiply concurrently with other operations.  At similar clocks, a hobbled Radeon 5830 will outperform a Radeon 6970.&lt;br /&gt;
&lt;br /&gt;
In custom builds, CPU performance will be less than expected if the OpenSSL library is an older version (&amp;lt;1.0.0d) or is not built with the appropriate optimizations enabled.&lt;br /&gt;
&lt;br /&gt;
== Vanity addresses for other crypto-coins ==&lt;br /&gt;
While bitcoin all addresses start with a &amp;quot;1&amp;quot; (one), some other crypto-coins use different address name spaces. Vanitygen (as of version 0.22) can be used to produce vanity addresses for these crypto coins as well (but not for [http://bitmessage.org bitmessage] addresses), by using the &amp;quot;-X&amp;quot; option. The following list provides some example command line calls and also indicates the address range for the respective coin:&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Bitcoin&#039;&#039;&#039; (BTC), &#039;&#039;&#039;Devcoin&#039;&#039;&#039; (DVC), &#039;&#039;&#039;Freicoin&#039;&#039;&#039; (FRC), &#039;&#039;&#039;Terracoin&#039;&#039;&#039; (TRC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 0 1 -k&lt;br /&gt;
or simply just&lt;br /&gt;
 $ ./vanitygen 1 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Novacoin&#039;&#039;&#039; (NVC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 8 4 -k&lt;br /&gt;
 $ ./vanitygen -X 8 4D -k&lt;br /&gt;
 $ ./vanitygen -X 8 4Z -k&lt;br /&gt;
 $ ./vanitygen -X 8 4a -k&lt;br /&gt;
 $ ./vanitygen -X 8 4d -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Feathercoin&#039;&#039;&#039; (FTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 14 6 -k&lt;br /&gt;
 $ ./vanitygen -X 14 6d -k&lt;br /&gt;
 $ ./vanitygen -X 14 6z -k&lt;br /&gt;
 $ ./vanitygen -X 14 7 -k&lt;br /&gt;
 $ ./vanitygen -X 14 71 -k&lt;br /&gt;
 $ ./vanitygen -X 14 72 -k&lt;br /&gt;
 $ ./vanitygen -X 14 73 -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Anoncoin&#039;&#039;&#039; (ANC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 23 A -k&lt;br /&gt;
 $ ./vanitygen -X 23 AF -k&lt;br /&gt;
 $ ./vanitygen -X 23 AZ -k&lt;br /&gt;
 $ ./vanitygen -X 23 Aa -k&lt;br /&gt;
 $ ./vanitygen -X 23 Af -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Chinacoin&#039;&#039;&#039; (CNC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 28 C -k&lt;br /&gt;
 $ ./vanitygen -X 28 CG -k&lt;br /&gt;
 $ ./vanitygen -X 28 CZ -k&lt;br /&gt;
 $ ./vanitygen -X 28 Ca -k&lt;br /&gt;
 $ ./vanitygen -X 28 Cf -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Digitalcoin&#039;&#039;&#039; (DGC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 30 D -k&lt;br /&gt;
 $ ./vanitygen -X 30 D5 -k&lt;br /&gt;
 $ ./vanitygen -X 30 D9 -k&lt;br /&gt;
 $ ./vanitygen -X 30 DA -k&lt;br /&gt;
 $ ./vanitygen -X 30 DU -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Litecoin&#039;&#039;&#039; (LTC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 48 L -k&lt;br /&gt;
 $ ./vanitygen -X 48 LK -k&lt;br /&gt;
 $ ./vanitygen -X 48 LZ -k&lt;br /&gt;
 $ ./vanitygen -X 48 La -k&lt;br /&gt;
 $ ./vanitygen -X 48 Li -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Namecoin&#039;&#039;&#039; (NMC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 52 M -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mv -k&lt;br /&gt;
 $ ./vanitygen -X 52 Mz -k&lt;br /&gt;
 $ ./vanitygen -X 52 N -k&lt;br /&gt;
 $ ./vanitygen -X 52 N1 -k&lt;br /&gt;
 $ ./vanitygen -X 52 N9 -k&lt;br /&gt;
 $ ./vanitygen -X 52 NA -k&lt;br /&gt;
 $ ./vanitygen -X 52 NK -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;PPCoin&#039;&#039;&#039; (PPC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 55 P -k&lt;br /&gt;
 $ ./vanitygen -X 55 P8 -k&lt;br /&gt;
 $ ./vanitygen -X 55 P9 -k&lt;br /&gt;
 $ ./vanitygen -X 55 PA -k&lt;br /&gt;
 $ ./vanitygen -X 55 PX -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;YaCoin&#039;&#039;&#039; (YAC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 77 X -k&lt;br /&gt;
 $ ./vanitygen -X 77 Xz -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y1 -k&lt;br /&gt;
 $ ./vanitygen -X 77 Y9 -k&lt;br /&gt;
 $ ./vanitygen -X 77 YA -k&lt;br /&gt;
 $ ./vanitygen -X 77 YP -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;BBQcoin&#039;&#039;&#039; (BQC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 85 b -k&lt;br /&gt;
 $ ./vanitygen -X 85 bC -k&lt;br /&gt;
 $ ./vanitygen -X 85 bZ -k&lt;br /&gt;
 $ ./vanitygen -X 85 ba -k&lt;br /&gt;
 $ ./vanitygen -X 85 bc -k&lt;br /&gt;
&lt;br /&gt;
Generate &#039;&#039;&#039;Ixcoin&#039;&#039;&#039; (IXC) addresses:&lt;br /&gt;
 $ ./vanitygen -X 138 x -k&lt;br /&gt;
 $ ./vanitygen -X 138 xX -k&lt;br /&gt;
 $ ./vanitygen -X 138 xZ -k&lt;br /&gt;
 $ ./vanitygen -X 138 xa -k&lt;br /&gt;
 $ ./vanitygen -X 138 xv -k&lt;br /&gt;
&lt;br /&gt;
Generally, to find out the address format of a given crypto-coin (i.e. the number after the -X option of vanitygen) one can use this service:&lt;br /&gt;
    &amp;lt;nowiki&amp;gt;http://darkgamex.ch:2751/q/decode_address/&amp;lt;Address&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Example: Take any Litecoin address, e.g. &amp;quot;LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&amp;quot;, and submit this URL:&lt;br /&gt;
    http://darkgamex.ch:2751/q/decode_address/LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp&lt;br /&gt;
The browser output will be:&lt;br /&gt;
    30:265dcf8616a9723d3b4ba35c246b041e20013597&lt;br /&gt;
The &#039;&#039;&#039;30&#039;&#039;&#039; is Litecoin&#039;s address format in hex (!), i.e. 30 (hex) = 48 (decimal), i.e. use &#039;&#039;&#039;-X 48&#039;&#039;&#039; in vanitygen to generate Liteoin addresses.&lt;br /&gt;
&lt;br /&gt;
Some related info here: https://en.bitcoin.it/wiki/List_of_address_prefixes&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Firstbits]]&lt;br /&gt;
* [[Bitcoin Vanity Generation Website]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Vanity address]]&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40881</id>
		<title>Talk:BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40881"/>
		<updated>2013-09-08T02:24:44Z</updated>

		<summary type="html">&lt;p&gt;Michael S: added own name tags&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marian on IRC reports: &amp;quot;The BNF [here] is erroneous, regarding the params, it says [ &amp;quot;?&amp;quot; bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters&amp;quot;. --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; ([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013) So should it rather be written something like this (I am not a BNF expert, just following my logic):&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparam [ bitcoinparams ] ]&lt;br /&gt;
 bitcoinparams   = *bitcoinparamamp&lt;br /&gt;
 bitcoinparamamp = &amp;quot;&amp;amp;&amp;quot; bitcoinparam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently ==&lt;br /&gt;
([[User:Michael_S|Michael_S]] ([[User talk:Michael_S|talk]]) 8 Sept 2013)&lt;br /&gt;
&lt;br /&gt;
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.&lt;br /&gt;
&lt;br /&gt;
When watching bitpay&#039;s mobile checkout demo video &amp;quot;http://www.youtube.com/watch?v=YZ-pqo0cLcE&amp;quot; it is clear that paying tips is somewhat cumbersome for the customer with today&#039;s wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;Enhancement proposal&#039;&#039;&#039;&amp;lt;/span&amp;gt;:&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Actually, &amp;quot;tipparam&amp;quot; is just a special case of &amp;quot;otherparam&amp;quot;, hence completely downwards compatible.&lt;br /&gt;
&lt;br /&gt;
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer&#039;s wallet app.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039; for the following scenario:&lt;br /&gt;
:Request 0.567 BTC from the customer of a restaurant and make the customer&#039;s bitcoin app show an advanced send dialog that allows adding a tip:&lt;br /&gt;
&lt;br /&gt;
Ex. 1) The pre-set tip value in the send dialog is set to zero (or to the client&#039;s pre-configured default tip value):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0.08505&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [URI code of the percentage character is &amp;quot;%25&amp;quot;]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [&amp;quot;lazy&amp;quot; notation, omitting the &amp;quot;25&amp;quot;. Actually, this is NOT correct, not URI compliant (RFC 2396), hence such an URI&lt;br /&gt;
   should not be generated. But it is proposed that the wallet app that has to decode the URI is implemented to understand&lt;br /&gt;
   this &amp;quot;lazy&amp;quot; syntax in the &amp;quot;tip&amp;quot; field anyhow, as safeguard to avoid errors in case that the merchant app generates such&lt;br /&gt;
   a &amp;quot;lazy&amp;quot; URI]&lt;br /&gt;
&lt;br /&gt;
Ex. 3) The pre-set tip value is 0.08508 BTC, and the &amp;quot;notes&amp;quot; field in the client app is pre-occupied with the name of the restaurant:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;amp;message=Charly%27s%20Bar&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* The new parameter has no &amp;quot;req-&amp;quot; prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.&lt;br /&gt;
* Otherwise, the customer&#039;s bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.&lt;br /&gt;
&lt;br /&gt;
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipON_BIP_0021.png|border]]&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40880</id>
		<title>Talk:BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40880"/>
		<updated>2013-09-08T02:06:16Z</updated>

		<summary type="html">&lt;p&gt;Michael S: added reply to original BNF syntax question&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marian on IRC reports: &amp;quot;The BNF [here] is erroneous, regarding the params, it says [ &amp;quot;?&amp;quot; bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters&amp;quot;. --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; (Michael_S) So should it rather be written something like this (I am not a BNF expert, just following my logic):&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparam [ bitcoinparams ] ]&lt;br /&gt;
 bitcoinparams   = *bitcoinparamamp&lt;br /&gt;
 bitcoinparamamp = &amp;quot;&amp;amp;&amp;quot; bitcoinparam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently ==&lt;br /&gt;
&lt;br /&gt;
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.&lt;br /&gt;
&lt;br /&gt;
When watching bitpay&#039;s mobile checkout demo video &amp;quot;http://www.youtube.com/watch?v=YZ-pqo0cLcE&amp;quot; it is clear that paying tips is somewhat cumbersome for the customer with today&#039;s wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;Enhancement proposal&#039;&#039;&#039;&amp;lt;/span&amp;gt;:&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Actually, &amp;quot;tipparam&amp;quot; is just a special case of &amp;quot;otherparam&amp;quot;, hence completely downwards compatible.&lt;br /&gt;
&lt;br /&gt;
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer&#039;s wallet app.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039; for the following scenario:&lt;br /&gt;
:Request 0.567 BTC from the customer of a restaurant and make the customer&#039;s bitcoin app show an advanced send dialog that allows adding a tip:&lt;br /&gt;
&lt;br /&gt;
Ex. 1) The pre-set tip value in the send dialog is set to zero (or to the client&#039;s pre-configured default tip value):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0.08505&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [URI code of the percentage character is &amp;quot;%25&amp;quot;]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [&amp;quot;lazy&amp;quot; notation, omitting the &amp;quot;25&amp;quot;. Actually, this is NOT correct, not URI compliant (RFC 2396), hence such an URI&lt;br /&gt;
   should not be generated. But it is proposed that the wallet app that has to decode the URI is implemented to understand&lt;br /&gt;
   this &amp;quot;lazy&amp;quot; syntax in the &amp;quot;tip&amp;quot; field anyhow, as safeguard to avoid errors in case that the merchant app generates such&lt;br /&gt;
   a &amp;quot;lazy&amp;quot; URI]&lt;br /&gt;
&lt;br /&gt;
Ex. 3) The pre-set tip value is 0.08508 BTC, and the &amp;quot;notes&amp;quot; field in the client app is pre-occupied with the name of the restaurant:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;amp;message=Charly%27s%20Bar&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* The new parameter has no &amp;quot;req-&amp;quot; prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.&lt;br /&gt;
* Otherwise, the customer&#039;s bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.&lt;br /&gt;
&lt;br /&gt;
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipON_BIP_0021.png|border]]&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40879</id>
		<title>Talk:BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40879"/>
		<updated>2013-09-08T01:29:48Z</updated>

		<summary type="html">&lt;p&gt;Michael S: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marian on IRC reports: &amp;quot;The BNF [here] is erroneous, regarding the params, it says [ &amp;quot;?&amp;quot; bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters&amp;quot;. --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently ==&lt;br /&gt;
&lt;br /&gt;
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.&lt;br /&gt;
&lt;br /&gt;
When watching bitpay&#039;s mobile checkout demo video &amp;quot;http://www.youtube.com/watch?v=YZ-pqo0cLcE&amp;quot; it is clear that paying tips is somewhat cumbersome for the customer with today&#039;s wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;Enhancement proposal&#039;&#039;&#039;&amp;lt;/span&amp;gt;:&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Actually, &amp;quot;tipparam&amp;quot; is just a special case of &amp;quot;otherparam&amp;quot;, hence completely downwards compatible.&lt;br /&gt;
&lt;br /&gt;
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer&#039;s wallet app.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039; for the following scenario:&lt;br /&gt;
:Request 0.567 BTC from the customer of a restaurant and make the customer&#039;s bitcoin app show an advanced send dialog that allows adding a tip:&lt;br /&gt;
&lt;br /&gt;
Ex. 1) The pre-set tip value in the send dialog is set to zero (or to the client&#039;s pre-configured default tip value):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0.08505&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [URI code of the percentage character is &amp;quot;%25&amp;quot;]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [&amp;quot;lazy&amp;quot; notation, omitting the &amp;quot;25&amp;quot;. Actually, this is NOT correct, not URI compliant (RFC 2396), hence such an URI&lt;br /&gt;
   should not be generated. But it is proposed that the wallet app that has to decode the URI is implemented to understand&lt;br /&gt;
   this &amp;quot;lazy&amp;quot; syntax in the &amp;quot;tip&amp;quot; field anyhow, as safeguard to avoid errors in case that the merchant app generates such&lt;br /&gt;
   a &amp;quot;lazy&amp;quot; URI]&lt;br /&gt;
&lt;br /&gt;
Ex. 3) The pre-set tip value is 0.08508 BTC, and the &amp;quot;notes&amp;quot; field in the client app is pre-occupied with the name of the restaurant:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;amp;message=Charly%27s%20Bar&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* The new parameter has no &amp;quot;req-&amp;quot; prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.&lt;br /&gt;
* Otherwise, the customer&#039;s bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.&lt;br /&gt;
&lt;br /&gt;
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipON_BIP_0021.png|border]]&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40878</id>
		<title>Talk:BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40878"/>
		<updated>2013-09-08T01:27:24Z</updated>

		<summary type="html">&lt;p&gt;Michael S: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marian on IRC reports: &amp;quot;The BNF [here] is erroneous, regarding the params, it says [ &amp;quot;?&amp;quot; bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters&amp;quot;. --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently ==&lt;br /&gt;
&lt;br /&gt;
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.&lt;br /&gt;
&lt;br /&gt;
When watching bitpay&#039;s mobile checkout demo video &amp;quot;http://www.youtube.com/watch?v=YZ-pqo0cLcE&amp;quot; it is clear that paying tips is somewhat cumbersome for the customer with today&#039;s wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;Enhancement proposal&#039;&#039;&#039;&amp;lt;/span&amp;gt;:&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Actually, &amp;quot;tipparam&amp;quot; is just a special case of &amp;quot;otherparam&amp;quot;, hence completely downwards compatible.&lt;br /&gt;
&lt;br /&gt;
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer&#039;s wallet app.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039; for the following scenario:&lt;br /&gt;
:Request 0.567 BTC from the customer of a restaurant and make the customer&#039;s bitcoin app show an advanced send dialog that allows adding a tip:&lt;br /&gt;
&lt;br /&gt;
Ex. 1) The pre-set tip value in the send dialog is set to zero (or to the client&#039;s pre-configured default tip value):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0.08505&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [URI code of the percentage character is &amp;quot;%25&amp;quot;]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [&amp;quot;lazy&amp;quot; notation, omitting the &amp;quot;25&amp;quot;. Actually, this is NOT correct, not URI compliant (RFC 2396), hence such an URI&lt;br /&gt;
   should not be generated. But it is proposed that the wallet app that has to decode the URI is implemented to understand&lt;br /&gt;
   this &amp;quot;lazy&amp;quot; syntax in the &amp;quot;tip&amp;quot; field anyhow, as safeguard to avoid errors in case that the merchant app generates such&lt;br /&gt;
   a &amp;quot;lazy&amp;quot; URI]&lt;br /&gt;
&lt;br /&gt;
Ex. 3) The pre-set tip value is 0.08508 BTC, and the &amp;quot;notes&amp;quot; field in the client app is pre-occupied with the name of the restaurant:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;amp;message=Charly%27s%20Bar&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* The new parameter has no &amp;quot;req-&amp;quot; prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.&lt;br /&gt;
* Otherwise, the customer&#039;s bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.&lt;br /&gt;
&lt;br /&gt;
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipON_BIP_0021.png|border]]&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40877</id>
		<title>Talk:BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40877"/>
		<updated>2013-09-08T01:25:47Z</updated>

		<summary type="html">&lt;p&gt;Michael S: Added a note on an RFC 2396 uncompliant URI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marian on IRC reports: &amp;quot;The BNF [here] is erroneous, regarding the params, it says [ &amp;quot;?&amp;quot; bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters&amp;quot;. --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently ==&lt;br /&gt;
&lt;br /&gt;
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.&lt;br /&gt;
&lt;br /&gt;
When watching bitpay&#039;s mobile checkout demo video &amp;quot;http://www.youtube.com/watch?v=YZ-pqo0cLcE&amp;quot; it is clear that paying tips is somewhat cumbersome for the customer with today&#039;s wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;Enhancement proposal&#039;&#039;&#039;&amp;lt;/span&amp;gt;:&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Actually, &amp;quot;tipparam&amp;quot; is just a special case of &amp;quot;otherparam&amp;quot;, hence completely downwards compatible.&lt;br /&gt;
&lt;br /&gt;
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer&#039;s wallet app.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039; for the following scenario:&lt;br /&gt;
:Request 0.567 BTC from the customer of a restaurant and make the customer&#039;s bitcoin app show an advanced send dialog that allows adding a tip:&lt;br /&gt;
&lt;br /&gt;
Ex. 1) The pre-set tip value in the send dialog is set to zero (or to the client&#039;s pre-configured default tip value):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0.08505&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [URI code of the percentage character is &amp;quot;%25&amp;quot;]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [&amp;quot;lazy&amp;quot; notation, omitting the &amp;quot;25&amp;quot;. Actually, this is NOT correct, not URI compiant (RFC 2396), hence such an URI&lt;br /&gt;
   should not be generated. But it is proposed that the wallet app that has to decode the URI is implemented to understand&lt;br /&gt;
   this &amp;quot;lazy&amp;quot; syntax in the &amp;quot;tip&amp;quot; field anyhow, as safeguard to avoid errors in case that the merchant app generates such&lt;br /&gt;
   a &amp;quot;lazy&amp;quot; URI]&lt;br /&gt;
&lt;br /&gt;
Ex. 3) The pre-set tip value is 0.08508 BTC, and the &amp;quot;notes&amp;quot; field in the client app is pre-occupied with the name of the restaurant:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;amp;message=Charly%27s%20Bar&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* The new parameter has no &amp;quot;req-&amp;quot; prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.&lt;br /&gt;
* Otherwise, the customer&#039;s bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.&lt;br /&gt;
&lt;br /&gt;
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipON_BIP_0021.png|border]]&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40876</id>
		<title>Talk:BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:BIP_0021&amp;diff=40876"/>
		<updated>2013-09-08T00:47:16Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marian on IRC reports: &amp;quot;The BNF [here] is erroneous, regarding the params, it says [ &amp;quot;?&amp;quot; bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters&amp;quot;. --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently ==&lt;br /&gt;
&lt;br /&gt;
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.&lt;br /&gt;
&lt;br /&gt;
When watching bitpay&#039;s mobile checkout demo video &amp;quot;http://www.youtube.com/watch?v=YZ-pqo0cLcE&amp;quot; it is clear that paying tips is somewhat cumbersome for the customer with today&#039;s wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;Enhancement proposal&#039;&#039;&#039;&amp;lt;/span&amp;gt;:&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 | &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam |&#039;&#039;&#039;&amp;lt;/span&amp;gt; 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;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;tipparam       = &amp;quot;tip=&amp;quot; [ *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;%&amp;quot; [ &amp;quot;25&amp;quot; ] ] ]&#039;&#039;&#039;&amp;lt;/span&amp;gt;&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;
Actually, &amp;quot;tipparam&amp;quot; is just a special case of &amp;quot;otherparam&amp;quot;, hence completely downwards compatible.&lt;br /&gt;
&lt;br /&gt;
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer&#039;s wallet app.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039; for the following scenario:&lt;br /&gt;
:Request 0.567 BTC from the customer of a restaurant and make the customer&#039;s bitcoin app show an advanced send dialog that allows adding a tip:&lt;br /&gt;
&lt;br /&gt;
Ex. 1) The pre-set tip value in the send dialog is set to zero (or to the client&#039;s pre-configured default tip value):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=0.08505&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%25&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [URI code of the percentage character is &amp;quot;%25&amp;quot;]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   [&amp;quot;lazy&amp;quot; notation, omitting the &amp;quot;25&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
Ex. 3) The pre-set tip value is 0.08508 BTC, and the &amp;quot;notes&amp;quot; field in the client app is pre-occupied with the name of the restaurant:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&amp;lt;/nowiki&amp;gt;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;amp;tip=15%&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;amp;message=Charly%27s%20Bar&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* The new parameter has no &amp;quot;req-&amp;quot; prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.&lt;br /&gt;
* Otherwise, the customer&#039;s bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.&lt;br /&gt;
&lt;br /&gt;
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:bitcoin-app-tipON_BIP_0021.png|border]]&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=File:Bitcoin-app-tipON_BIP_0021.png&amp;diff=40875</id>
		<title>File:Bitcoin-app-tipON BIP 0021.png</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=File:Bitcoin-app-tipON_BIP_0021.png&amp;diff=40875"/>
		<updated>2013-09-08T00:37:42Z</updated>

		<summary type="html">&lt;p&gt;Michael S: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=File:Bitcoin-app-tipOFF_BIP_0021.png&amp;diff=40874</id>
		<title>File:Bitcoin-app-tipOFF BIP 0021.png</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=File:Bitcoin-app-tipOFF_BIP_0021.png&amp;diff=40874"/>
		<updated>2013-09-08T00:37:18Z</updated>

		<summary type="html">&lt;p&gt;Michael S: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=33180</id>
		<title>Electrum/Documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=33180"/>
		<updated>2012-11-29T00:18:43Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Using Electrum through a HTTP proxy */  Typo: &amp;quot;erver&amp;quot; --&amp;gt; &amp;quot;server&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation of Electrum Bitcoin Client (Focus on the GUI)==&lt;br /&gt;
This page tries to document certain aspects of the [[Electrum|Electrum]] Bitcoin Client. The focus is on explaining certain aspects of its GUI, such that it gets easier for the user to understand its use.&lt;br /&gt;
&lt;br /&gt;
More documentation, especially with regard to command line parameters, can be found at the parent page of this Wiki, i.e. [[Electrum|here]].&lt;br /&gt;
&lt;br /&gt;
===Version Info===&lt;br /&gt;
Unless stated otherwise in particular sub-sections, the present state of this documentation is based on&lt;br /&gt;
* &#039;&#039;&#039;Electrum version 0.58&#039;&#039;&#039;&lt;br /&gt;
As this documentation gets updated, this &amp;quot;version info&amp;quot; can be updated, too!&lt;br /&gt;
&lt;br /&gt;
Later versions of Electrum may add new features or deviate from this description to some extend.&lt;br /&gt;
&lt;br /&gt;
===Open/Unclear Points===&lt;br /&gt;
&lt;br /&gt;
Discussions about unclear points should take place on the [[Talk:Electrum/Documentation|Discussion page.]]&lt;br /&gt;
&lt;br /&gt;
==What is a &amp;quot;Wallet&amp;quot; and a &amp;quot;Bitcoin Address&amp;quot;?==&lt;br /&gt;
* (General, not specific to Electrum)&lt;br /&gt;
&lt;br /&gt;
Your wallet is a list of Bitcoin addresses (more precisely: a list of privat/public key pairs). Each address &amp;quot;contains&amp;quot; (or is associated with) a certain amount of Bitcoins at a given time.&lt;br /&gt;
&lt;br /&gt;
Your wallet&#039;s balance is the sum of all Bitcoins of all your wallet&#039;s Bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
Your wallet consists of both [[#Normal Addresses|normal addresses]] and [[#Change Addresses|change addresses]]. Although they are fully equivalent from the Bitcoin protocol&#039;s point of view, they are different in how they are used by Bitcoin clients like Electrum.&lt;br /&gt;
&lt;br /&gt;
===Normal Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====How are New &amp;quot;Normal Addresses&amp;quot; Created for my Wallet?====&lt;br /&gt;
A Bitcoin client allows you to trigger the generation of a new Bitcoin address either manually, or it generates new addresses automatically upon certain conditions. The latter applies to Electrum: Depending on the &amp;quot;[[#What is the &amp;quot;Gap Limit&amp;quot;?|gap limit]]&amp;quot; setting in Electrum&#039;s program preferences, there will always be a certain number of unused addresses showing up in your list of receive addresses (=your own wallet&#039;s addresses), and as these addresses get used, new ones will show up automatically.&lt;br /&gt;
&lt;br /&gt;
Typically you want to use a new address for receiving Bitcoins from somebody, instead of using any of your wallet&#039;s present addresses that have already been used for earlier transactions. This is to protect your privacy, because all Bitcoins transfers are published in the blockchain and can be read by anyone.&lt;br /&gt;
&lt;br /&gt;
Another way of adding addresses to your wallet is to [[#Imported Addresses|import]] private keys (with their addresses of course), using Electrum&#039;s [[Electrum|command line options]]. See section about [[#Imported Addresses|imported addresses]] for more details.&lt;br /&gt;
&lt;br /&gt;
===Change Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====What is a &amp;quot;Change Address&amp;quot;, and why is it useful?====&lt;br /&gt;
The concept of change addresses is a feature not of the Bitcoin protocol, but of a Bitcoin client. It is implemented not only in Electrum but in most Bitcoin clients, including the original &amp;quot;Satoshi&amp;quot; Bitcoin client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How it works:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Whenever your Bitcoin client (e.g. Electrum) sends Bitcoins from your wallet&#039;s address &amp;quot;A&amp;quot; to a foreing address &amp;quot;B&amp;quot;, a new change address &amp;quot;C&amp;quot; is created by Electrum and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Example: Address &amp;quot;A&amp;quot; has 20 BTC. Electrum sends 9 BTC from &amp;quot;A&amp;quot; to &amp;quot;B&amp;quot;. The change (20-9 = 11 BTC) is sent to the &amp;quot;change address&amp;quot; &amp;quot;C&amp;quot;. For this purpose, address &amp;quot;C&amp;quot; is created by Electrum at this moment and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Exception: If all the Bitcoins of &amp;quot;A&amp;quot; are sent to &amp;quot;B&amp;quot;, there is no need for creating a change address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Actually, Bitcoin clients can also work without change addresses. In this case, the change would be sent back to &amp;quot;A&amp;quot; instead of the new address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why the concept of &amp;quot;change addresses&amp;quot; is useful:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Using a new change address makes it more difficult for other people (by analyzing the blockchain) to track how many Bitcoins you have or where you&#039;re spending them.&lt;br /&gt;
* It also conceals which output is the &amp;quot;spend&amp;quot; and which is the &amp;quot;change&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Imported Addresses===&lt;br /&gt;
Instead of generating new addresses in the default way from the wallet&#039;s [[#Seed|seed]], Electrum also allows you to import addresses (and their private keys of course) from external sources, e.g. from another Bitcoin client&#039;s wallet. For this, use Electrum&#039;s [[Electrum|command line]] options. Note that imported addresses cannot be recovered from your wallet&#039;s [[#Seed|seed]] and therefore need to be secured separately for a complete backup of your wallet.&lt;br /&gt;
&lt;br /&gt;
Imported addresses can be used like any other [[#Normal Addresses|normal]] receive address with Electrum for transmission or reception of Bitcoins, and can also be (un)tagged as [[#What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?|&amp;quot;prioritized&amp;quot; or &amp;quot;frozen&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
===Deterministic Wallet===&lt;br /&gt;
====What is a &amp;quot;Deterministic Wallet&amp;quot; in Electrum?====&lt;br /&gt;
Traditionally, all new addresses (incl. the private keys of course) added to the wallet ([[#Normal Addresses|normal addresses]] or [[#Change Addresses|change addresses]]) are generated randomly. This is the case e.g. for the original &amp;quot;Satoshi Bitcoin Client&amp;quot; (at least as of today, version 0.6.2).&lt;br /&gt;
&lt;br /&gt;
Contrary to that, a Bitcoin client with a &amp;quot;Deterministic Wallet&amp;quot; will generate all new addresses accoding to a pre-defined (i.e. &amp;quot;deterministic&amp;quot;) algorithm as a function of a wallet-specific [[#Seed|seed]], which is a 128 bit number. This means, if the seed is known, all new addresses that Electrum will ever create for this wallet are known, because Electrum&#039;s algorithm is known (and open source).&lt;br /&gt;
This is a big advantage when it comes to making wallet backups:&lt;br /&gt;
* &#039;&#039;Traditionally&#039;&#039;, a wallet backup just contains the bitcoin addresses (and private keys of course) that have been created by the client by the time the backup was made. If the user performs transactions after the backup, new addresses ([[#Normal Addresses|normal]] or [[#Change Addresses|change]] addresses) will be generated and added to the wallet. These are not included in the backup yet. If the wallet in use gets lost, all the Bitcoins that are associated with the new addresses will also be lost. To avoid the risk of a too high loss, regular wallet backups are important.&lt;br /&gt;
* &#039;&#039;With a Deterministic Wallet&#039;&#039; (like with Electrum), the wallet backup only needs to contain the seed, and all new addresses generated in the future are already secured by the initial backup. Hence, regular new backups are not required!&lt;br /&gt;
&lt;br /&gt;
===Seed===&lt;br /&gt;
====What is the &amp;quot;Seed&amp;quot; of a Deterministic Wallet in Electrum?====&lt;br /&gt;
The Seed of a [[#Deterministic Wallet|deterministic wallet]] is a series of 128 random bits in Electrum.&lt;br /&gt;
For convenience, a seed can also be expressed by a sequence of 12 words in Electrum, and it also supports generation of a QR code to facilitate the backup of the seed.&lt;br /&gt;
&lt;br /&gt;
So there are 2^128 possible seeds for a deterministic wallet in Electrum.&lt;br /&gt;
For comparison, the total number of Bitcoin addresses is 2^160, and the number of atoms on earth is 2^166.&lt;br /&gt;
So there exists one Bitcoin address per 64 atoms on earth, and there exists one seed of Electrum wallets per 4.3 Billion Bitcoin addresses.&lt;br /&gt;
(By the way: The number of atoms in the complete universe is estimated as 2^266).&lt;br /&gt;
&lt;br /&gt;
===What is the &amp;quot;Gap Limit&amp;quot;?===&lt;br /&gt;
&lt;br /&gt;
The gap limit is the maximal number of contiguous unused addresses in your deterministic sequence of addresses.&lt;br /&gt;
&lt;br /&gt;
If you recover your wallet from seed, you will notice that the gap limit is asked by the recovery dialog.&lt;br /&gt;
It is used in order to decide when to stop the recovery procedure.&lt;br /&gt;
&lt;br /&gt;
If you need to have more receiving addresses in your wallet, you may increase your gap limit (expert mode).&lt;br /&gt;
This, however, means that you will need to remember the new limit in order to be able to recover your wallet from seed.&lt;br /&gt;
&lt;br /&gt;
==More on the Electrum GUI==&lt;br /&gt;
&lt;br /&gt;
===Send tab and completions===&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;pay to&amp;quot; input line does not only accept bitcoin addresses. You may type a label from your list of contacts, or an alias.&lt;br /&gt;
&lt;br /&gt;
Completions are available based on the labels of your addressbook. Example: &lt;br /&gt;
&lt;br /&gt;
[[Image:Electrum completion 0.png|450px]]&lt;br /&gt;
[[Image:Electrum completion 1.png|450px]]&lt;br /&gt;
&lt;br /&gt;
===What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?===&lt;br /&gt;
When sending Bitcoins to a foreign address, Electrum will by default use a built-in method to select the address(es) of the wallet used for sending these Bitcoins.&lt;br /&gt;
&lt;br /&gt;
* When you &#039;&#039;prioritize&#039;&#039; some of your wallet&#039;s addresses, these addresses will be used with preference. Other addresses will not be used until the prioritized addresses contain no more Bitcoins.&lt;br /&gt;
* When you &#039;&#039;freeze&#039;&#039; some of your wallet&#039;s addresses, these addresses will not be used for sending bitcoins. Instead, other addresses will be used. Sending Bitcoins is not possible if the non-frozen addresses of your wallet do not contain enough funds. &lt;br /&gt;
&lt;br /&gt;
The user can (de)prioritize or (un)freeze both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses.&lt;br /&gt;
&lt;br /&gt;
Note: Clearly, an address can not be &amp;quot;prioritized&amp;quot; and &amp;quot;frozen&amp;quot; at the same time.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Tx&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab (own wallet&#039;s addresses) and &amp;quot;Contacts&amp;quot; tab (foreing addresses).&lt;br /&gt;
&lt;br /&gt;
Tx stands for &amp;quot;Transaction&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The Tx column in Electrum displays a number for each Bitcoin address in the address list, both for own addresses (&amp;quot;Receive&amp;quot; tab) and for foreing addresses (&amp;quot;Contacts&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Receive&amp;quot; tab (own addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of _incoming_ Bitcoin transactions that have ever been sent to this address.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Contacts&amp;quot; tab (foreign addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of Bitcoin transactions that have ever been carried out from addresses of the current wallet towards this contact address&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Balance&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
The balance column indicates the amount of Bitcoins belonging to the given address.&lt;br /&gt;
The individual balances add up to the total balance of your wallet.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Flag&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
This column indicates certain properties of the different addresses:&lt;br /&gt;
* C = [[#Change Addresses|Change address]] (without a &amp;quot;C&amp;quot; it means it is a [[#Normal Addresses|normal address]])&lt;br /&gt;
* P = Prioritized address&lt;br /&gt;
* F = Frozen address&lt;br /&gt;
* I = [[#Imported Addresses|Imported address]]&lt;br /&gt;
&lt;br /&gt;
Note: P and F flags can be applied to both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses, and also to [[#Imported Addresses|imported addresses]].&lt;br /&gt;
&lt;br /&gt;
===What do colors mean?===&lt;br /&gt;
In the Receive tab:&lt;br /&gt;
*green = prioritized&lt;br /&gt;
*blue = frozen&lt;br /&gt;
In the Contacts tab:&lt;br /&gt;
*gray = alias&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
=== &#039;transaction rejected by memorypool&#039; errors ===&lt;br /&gt;
&lt;br /&gt;
When you send a transaction, there is a delay before the Electrum client displays the transaction in its history.&lt;br /&gt;
This is because the server polls bitcoind&#039;s memorypool every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
If you create another transaction during this interval, during which the first tx is not displayed,&lt;br /&gt;
then your client will pick the same coins again, and the transaction will be rejected as a [[Double-spending|double spend]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Using Electrum through a HTTP proxy ===&lt;br /&gt;
&lt;br /&gt;
When you are behind a firewall you can use a HTTP proxy to connect to an Electrum server with some limitations¹.&lt;br /&gt;
&lt;br /&gt;
On Linux (and other POSIX-like systems) set the &#039;&#039;http_proxy&#039;&#039; variable and start the Electrum client, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   $ export http_proxy=&amp;quot;http://&amp;lt;proxyname&amp;gt;:&amp;lt;proxyport&amp;gt;/&amp;quot;&lt;br /&gt;
   $ ./electrum&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Once the client comes up you need to change your server connection to &#039;http&#039; and to adjust the port, afterwards your Electrum client should work as usual. &lt;br /&gt;
&lt;br /&gt;
¹ Limitations:&lt;br /&gt;
* Electrum server selection won&#039;t work; you must manually enter the connection data (server, port &amp;amp; protocol)  &lt;br /&gt;
* Exchange rates cannot be fetched/displayed.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://ecdsa.org/electrum Electrum] project website&lt;br /&gt;
* [https://gitorious.org/electrum Electrum] project source (gitorius)&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=50936.msg950497#msg950497 Electrum Forum] - here this documentation was started&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:Electrum/TODO&amp;diff=29401</id>
		<title>Talk:Electrum/TODO</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:Electrum/TODO&amp;diff=29401"/>
		<updated>2012-08-04T10:51:30Z</updated>

		<summary type="html">&lt;p&gt;Michael S: Created page with &amp;quot;I think what would be nice: * offline wallet support *via GUI* (like Armory), so that I can do my BTC transfers via an offline PC running Electrum, and USB stick and an online...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I think what would be nice:&lt;br /&gt;
* offline wallet support *via GUI* (like Armory), so that I can do my BTC transfers via an offline PC running Electrum, and USB stick and an online PC running Electrum, where my private keys are only on my offline PC.&lt;br /&gt;
* import/backup of (non-deterministic) keys via GUI&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=29369</id>
		<title>Electrum/Documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=29369"/>
		<updated>2012-08-03T23:12:43Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Send tab and completions */ Editorial: Added one space character.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation of Electrum Bitcoin Client (Focus on the GUI)==&lt;br /&gt;
This page tries to document certain aspects of the [[Electrum|Electrum]] Bitcoin Client. The focus is on explaining certain aspects of its GUI, such that it gets easier for the user to understand its use.&lt;br /&gt;
&lt;br /&gt;
More documentation, especially with regard to command line parameters, can be found at the parent page of this Wiki, i.e. [[Electrum|here]].&lt;br /&gt;
&lt;br /&gt;
===Version Info===&lt;br /&gt;
Unless stated otherwise in particular sub-sections, the present state of this documentation is based on&lt;br /&gt;
* &#039;&#039;&#039;Electrum version 0.58&#039;&#039;&#039;&lt;br /&gt;
As this documentation gets updated, this &amp;quot;version info&amp;quot; can be updated, too!&lt;br /&gt;
&lt;br /&gt;
Later versions of Electrum may add new features or deviate from this description to some extend.&lt;br /&gt;
&lt;br /&gt;
===Open/Unclear Points===&lt;br /&gt;
&lt;br /&gt;
Discussions about unclear points should take place on the [[Talk:Electrum/Documentation|Discussion page.]]&lt;br /&gt;
&lt;br /&gt;
==What is a &amp;quot;Wallet&amp;quot; and a &amp;quot;Bitcoin Address&amp;quot;?==&lt;br /&gt;
* (General, not specific to Electrum)&lt;br /&gt;
&lt;br /&gt;
Your wallet is a list of Bitcoin addresses (more precisely: a list of privat/public key pairs). Each address &amp;quot;contains&amp;quot; (or is associated with) a certain amount of Bitcoins at a given time.&lt;br /&gt;
&lt;br /&gt;
Your wallet&#039;s balance is the sum of all Bitcoins of all your wallet&#039;s Bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
Your wallet consists of both [[#Normal Addresses|normal addresses]] and [[#Change Addresses|change addresses]]. Although they are fully equivalent from the Bitcoin protocol&#039;s point of view, they are different in how they are used by Bitcoin clients like Electrum.&lt;br /&gt;
&lt;br /&gt;
===Normal Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====How are New &amp;quot;Normal Addresses&amp;quot; Created for my Wallet?====&lt;br /&gt;
A Bitcoin client allows you to trigger the generation of a new Bitcoin address either manually, or it generates new addresses automatically upon certain conditions. The latter applies to Electrum: Depending on the &amp;quot;[[#What is the &amp;quot;Gap Limit&amp;quot;?|gap limit]]&amp;quot; setting in Electrum&#039;s program preferences, there will always be a certain number of unused addresses showing up in your list of receive addresses (=your own wallet&#039;s addresses), and as these addresses get used, new ones will show up automatically.&lt;br /&gt;
&lt;br /&gt;
Typically you want to use a new address for receiving Bitcoins from somebody, instead of using any of your wallet&#039;s present addresses that have already been used for earlier transactions. This is to protect your privacy, because all Bitcoins transfers are published in the blockchain and can be read by anyone.&lt;br /&gt;
&lt;br /&gt;
Another way of adding addresses to your wallet is to [[#Imported Addresses|import]] private keys (with their addresses of course), using Electrum&#039;s [[Electrum|command line options]]. See section about [[#Imported Addresses|imported addresses]] for more details.&lt;br /&gt;
&lt;br /&gt;
===Change Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====What is a &amp;quot;Change Address&amp;quot;, and why is it useful?====&lt;br /&gt;
The concept of change addresses is a feature not of the Bitcoin protocol, but of a Bitcoin client. It is implemented not only in Electrum but in most Bitcoin clients, including the original &amp;quot;Satoshi&amp;quot; Bitcoin client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How it works:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Whenever your Bitcoin client (e.g. Electrum) sends Bitcoins from your wallet&#039;s address &amp;quot;A&amp;quot; to a foreing address &amp;quot;B&amp;quot;, a new change address &amp;quot;C&amp;quot; is created by Electrum and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Example: Address &amp;quot;A&amp;quot; has 20 BTC. Electrum sends 9 BTC from &amp;quot;A&amp;quot; to &amp;quot;B&amp;quot;. The change (20-9 = 11 BTC) is sent to the &amp;quot;change address&amp;quot; &amp;quot;C&amp;quot;. For this purpose, address &amp;quot;C&amp;quot; is created by Electrum at this moment and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Exception: If all the Bitcoins of &amp;quot;A&amp;quot; are sent to &amp;quot;B&amp;quot;, there is no need for creating a change address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Actually, Bitcoin clients can also work without change addresses. In this case, the change would be sent back to &amp;quot;A&amp;quot; instead of the new address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why the concept of &amp;quot;change addresses&amp;quot; is useful:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Using a new change address makes it more difficult for other people (by analyzing the blockchain) to track how many Bitcoins you have or where you&#039;re spending them.&lt;br /&gt;
* It also conceals which output is the &amp;quot;spend&amp;quot; and which is the &amp;quot;change&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Imported Addresses===&lt;br /&gt;
Instead of generating new addresses in the default way from the wallet&#039;s [[#Seed|seed]], Electrum also allows you to import addresses (and their private keys of course) from external sources, e.g. from another Bitcoin client&#039;s wallet. For this, use Electrum&#039;s [[Electrum|command line]] options. Note that imported addresses cannot be recovered from your wallet&#039;s [[#Seed|seed]] and therefore need to be secured separately for a complete backup of your wallet.&lt;br /&gt;
&lt;br /&gt;
Imported addresses can be used like any other [[#Normal Addresses|normal]] receive address with Electrum for transmission or reception of Bitcoins, and can also be (un)tagged as [[#What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?|&amp;quot;prioritized&amp;quot; or &amp;quot;frozen&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
===Deterministic Wallet===&lt;br /&gt;
====What is a &amp;quot;Deterministic Wallet&amp;quot; in Electrum?====&lt;br /&gt;
Traditionally, all new addresses (incl. the private keys of course) added to the wallet ([[#Normal Addresses|normal addresses]] or [[#Change Addresses|change addresses]]) are generated randomly. This is the case e.g. for the original &amp;quot;Satoshi Bitcoin Client&amp;quot; (at least as of today, version 0.6.2).&lt;br /&gt;
&lt;br /&gt;
Contrary to that, a Bitcoin client with a &amp;quot;Deterministic Wallet&amp;quot; will generate all new addresses accoding to a pre-defined (i.e. &amp;quot;deterministic&amp;quot;) algorithm as a function of a wallet-specific [[#Seed|seed]], which is a 128 bit number. This means, if the seed is known, all new addresses that Electrum will ever create for this wallet are known, because Electrum&#039;s algorithm is known (and open source).&lt;br /&gt;
This is a big advantage when it comes to making wallet backups:&lt;br /&gt;
* &#039;&#039;Traditionally&#039;&#039;, a wallet backup just contains the bitcoin addresses (and private keys of course) that have been created by the client by the time the backup was made. If the user performs transactions after the backup, new addresses ([[#Normal Addresses|normal]] or [[#Change Addresses|change]] addresses) will be generated and added to the wallet. These are not included in the backup yet. If the wallet in use gets lost, all the Bitcoins that are associated with the new addresses will also be lost. To avoid the risk of a too high loss, regular wallet backups are important.&lt;br /&gt;
* &#039;&#039;With a Deterministic Wallet&#039;&#039; (like with Electrum), the wallet backup only needs to contain the seed, and all new addresses generated in the future are already secured by the initial backup. Hence, regular new backups are not required!&lt;br /&gt;
&lt;br /&gt;
===Seed===&lt;br /&gt;
====What is the &amp;quot;Seed&amp;quot; of a Deterministic Wallet in Electrum?====&lt;br /&gt;
The Seed of a [[#Deterministic Wallet|deterministic wallet]] is a series of 128 random bits in Electrum.&lt;br /&gt;
For convenience, a seed can also be expressed by a sequence of 12 words in Electrum, and it also supports generation of a QR code to facilitate the backup of the seed.&lt;br /&gt;
&lt;br /&gt;
So there are 2^128 possible seeds for a deterministic wallet in Electrum.&lt;br /&gt;
For comparison, the total number of Bitcoin addresses is 2^160, and the number of atoms on earth is 2^166.&lt;br /&gt;
So there exists one Bitcoin address per 64 atoms on earth, and there exists one seed of Electrum wallets per 4.3 Billion Bitcoin addresses.&lt;br /&gt;
(By the way: The number of atoms in the complete universe is estimated as 2^266).&lt;br /&gt;
&lt;br /&gt;
===What is the &amp;quot;Gap Limit&amp;quot;?===&lt;br /&gt;
&lt;br /&gt;
The gap limit is the maximal number of contiguous unused addresses in your deterministic sequence of addresses.&lt;br /&gt;
&lt;br /&gt;
If you recover your wallet from seed, you will notice that the gap limit is asked by the recovery dialog.&lt;br /&gt;
It is used in order to decide when to stop the recovery procedure.&lt;br /&gt;
&lt;br /&gt;
If you need to have more receiving addresses in your wallet, you may increase your gap limit (expert mode).&lt;br /&gt;
This, however, means that you will need to remember the new limit in order to be able to recover your wallet from seed.&lt;br /&gt;
&lt;br /&gt;
==More on the Electrum GUI==&lt;br /&gt;
&lt;br /&gt;
===Send tab and completions===&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;pay to&amp;quot; input line does not only accept bitcoin addresses. You may type a label from your list of contacts, or an alias.&lt;br /&gt;
&lt;br /&gt;
Completions are available based on the labels of your addressbook. Example: &lt;br /&gt;
&lt;br /&gt;
[[Image:Electrum completion 0.png|450px]]&lt;br /&gt;
[[Image:Electrum completion 1.png|450px]]&lt;br /&gt;
&lt;br /&gt;
===What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?===&lt;br /&gt;
When sending Bitcoins to a foreign address, Electrum will by default use a built-in method to select the address(es) of the wallet used for sending these Bitcoins.&lt;br /&gt;
&lt;br /&gt;
* When you &#039;&#039;prioritize&#039;&#039; some of your wallet&#039;s addresses, these addresses will be used with preference. Other addresses will not be used until the prioritized addresses contain no more Bitcoins.&lt;br /&gt;
* When you &#039;&#039;freeze&#039;&#039; some of your wallet&#039;s addresses, these addresses will not be used for sending bitcoins. Instead, other addresses will be used. Sending Bitcoins is not possible if the non-frozen addresses of your wallet do not contain enough funds. &lt;br /&gt;
&lt;br /&gt;
The user can (de)prioritize or (un)freeze both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses.&lt;br /&gt;
&lt;br /&gt;
Note: Clearly, an address can not be &amp;quot;prioritized&amp;quot; and &amp;quot;frozen&amp;quot; at the same time.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Tx&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab (own wallet&#039;s addresses) and &amp;quot;Contacts&amp;quot; tab (foreing addresses).&lt;br /&gt;
&lt;br /&gt;
Tx stands for &amp;quot;Transaction&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The Tx column in Electrum displays a number for each Bitcoin address in the address list, both for own addresses (&amp;quot;Receive&amp;quot; tab) and for foreing addresses (&amp;quot;Contacts&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Receive&amp;quot; tab (own addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of _incoming_ Bitcoin transactions that have ever been sent to this address.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Contacts&amp;quot; tab (foreign addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of Bitcoin transactions that have ever been carried out from addresses of the current wallet towards this contact address&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Balance&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
The balance column indicates the amount of Bitcoins belonging to the given address.&lt;br /&gt;
The individual balances add up to the total balance of your wallet.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Flag&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
This column indicates certain properties of the different addresses:&lt;br /&gt;
* C = [[#Change Addresses|Change address]] (without a &amp;quot;C&amp;quot; it means it is a [[#Normal Addresses|normal address]])&lt;br /&gt;
* P = Prioritized address&lt;br /&gt;
* F = Frozen address&lt;br /&gt;
* I = [[#Imported Addresses|Imported address]]&lt;br /&gt;
&lt;br /&gt;
Note: P and F flags can be applied to both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses, and also to [[#Imported Addresses|imported addresses]].&lt;br /&gt;
&lt;br /&gt;
===What do colors mean?===&lt;br /&gt;
In the Receive tab:&lt;br /&gt;
*green = prioritized&lt;br /&gt;
*blue = frozen&lt;br /&gt;
In the Contacts tab:&lt;br /&gt;
*gray = alias&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
=== &#039;transaction rejected by memorypool&#039; errors ===&lt;br /&gt;
&lt;br /&gt;
When you send a transaction, there is a delay before the Electrum client displays the transaction in its history.&lt;br /&gt;
This is because the server polls bitcoind&#039;s memorypool every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
If you create another transaction during this interval, during which the first tx is not displayed,&lt;br /&gt;
then your client will pick the same coins again, and the transaction will be rejected as a [[Double-spending|double spend]].&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://ecdsa.org/electrum Electrum] project website&lt;br /&gt;
* [https://gitorious.org/electrum Electrum] project source (gitorius)&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=50936.msg950497#msg950497 Electrum Forum] - here this documentation was started&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=29368</id>
		<title>Electrum/Documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=29368"/>
		<updated>2012-08-03T23:10:41Z</updated>

		<summary type="html">&lt;p&gt;Michael S: 2^6 is 64, not 1 Million. I confused 2^6 with 10^6 in the original text - now corrected!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation of Electrum Bitcoin Client (Focus on the GUI)==&lt;br /&gt;
This page tries to document certain aspects of the [[Electrum|Electrum]] Bitcoin Client. The focus is on explaining certain aspects of its GUI, such that it gets easier for the user to understand its use.&lt;br /&gt;
&lt;br /&gt;
More documentation, especially with regard to command line parameters, can be found at the parent page of this Wiki, i.e. [[Electrum|here]].&lt;br /&gt;
&lt;br /&gt;
===Version Info===&lt;br /&gt;
Unless stated otherwise in particular sub-sections, the present state of this documentation is based on&lt;br /&gt;
* &#039;&#039;&#039;Electrum version 0.58&#039;&#039;&#039;&lt;br /&gt;
As this documentation gets updated, this &amp;quot;version info&amp;quot; can be updated, too!&lt;br /&gt;
&lt;br /&gt;
Later versions of Electrum may add new features or deviate from this description to some extend.&lt;br /&gt;
&lt;br /&gt;
===Open/Unclear Points===&lt;br /&gt;
&lt;br /&gt;
Discussions about unclear points should take place on the [[Talk:Electrum/Documentation|Discussion page.]]&lt;br /&gt;
&lt;br /&gt;
==What is a &amp;quot;Wallet&amp;quot; and a &amp;quot;Bitcoin Address&amp;quot;?==&lt;br /&gt;
* (General, not specific to Electrum)&lt;br /&gt;
&lt;br /&gt;
Your wallet is a list of Bitcoin addresses (more precisely: a list of privat/public key pairs). Each address &amp;quot;contains&amp;quot; (or is associated with) a certain amount of Bitcoins at a given time.&lt;br /&gt;
&lt;br /&gt;
Your wallet&#039;s balance is the sum of all Bitcoins of all your wallet&#039;s Bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
Your wallet consists of both [[#Normal Addresses|normal addresses]] and [[#Change Addresses|change addresses]]. Although they are fully equivalent from the Bitcoin protocol&#039;s point of view, they are different in how they are used by Bitcoin clients like Electrum.&lt;br /&gt;
&lt;br /&gt;
===Normal Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====How are New &amp;quot;Normal Addresses&amp;quot; Created for my Wallet?====&lt;br /&gt;
A Bitcoin client allows you to trigger the generation of a new Bitcoin address either manually, or it generates new addresses automatically upon certain conditions. The latter applies to Electrum: Depending on the &amp;quot;[[#What is the &amp;quot;Gap Limit&amp;quot;?|gap limit]]&amp;quot; setting in Electrum&#039;s program preferences, there will always be a certain number of unused addresses showing up in your list of receive addresses (=your own wallet&#039;s addresses), and as these addresses get used, new ones will show up automatically.&lt;br /&gt;
&lt;br /&gt;
Typically you want to use a new address for receiving Bitcoins from somebody, instead of using any of your wallet&#039;s present addresses that have already been used for earlier transactions. This is to protect your privacy, because all Bitcoins transfers are published in the blockchain and can be read by anyone.&lt;br /&gt;
&lt;br /&gt;
Another way of adding addresses to your wallet is to [[#Imported Addresses|import]] private keys (with their addresses of course), using Electrum&#039;s [[Electrum|command line options]]. See section about [[#Imported Addresses|imported addresses]] for more details.&lt;br /&gt;
&lt;br /&gt;
===Change Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====What is a &amp;quot;Change Address&amp;quot;, and why is it useful?====&lt;br /&gt;
The concept of change addresses is a feature not of the Bitcoin protocol, but of a Bitcoin client. It is implemented not only in Electrum but in most Bitcoin clients, including the original &amp;quot;Satoshi&amp;quot; Bitcoin client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How it works:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Whenever your Bitcoin client (e.g. Electrum) sends Bitcoins from your wallet&#039;s address &amp;quot;A&amp;quot; to a foreing address &amp;quot;B&amp;quot;, a new change address &amp;quot;C&amp;quot; is created by Electrum and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Example: Address &amp;quot;A&amp;quot; has 20 BTC. Electrum sends 9 BTC from &amp;quot;A&amp;quot; to &amp;quot;B&amp;quot;. The change (20-9 = 11 BTC) is sent to the &amp;quot;change address&amp;quot; &amp;quot;C&amp;quot;. For this purpose, address &amp;quot;C&amp;quot; is created by Electrum at this moment and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Exception: If all the Bitcoins of &amp;quot;A&amp;quot; are sent to &amp;quot;B&amp;quot;, there is no need for creating a change address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Actually, Bitcoin clients can also work without change addresses. In this case, the change would be sent back to &amp;quot;A&amp;quot; instead of the new address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why the concept of &amp;quot;change addresses&amp;quot; is useful:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Using a new change address makes it more difficult for other people (by analyzing the blockchain) to track how many Bitcoins you have or where you&#039;re spending them.&lt;br /&gt;
* It also conceals which output is the &amp;quot;spend&amp;quot; and which is the &amp;quot;change&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Imported Addresses===&lt;br /&gt;
Instead of generating new addresses in the default way from the wallet&#039;s [[#Seed|seed]], Electrum also allows you to import addresses (and their private keys of course) from external sources, e.g. from another Bitcoin client&#039;s wallet. For this, use Electrum&#039;s [[Electrum|command line]] options. Note that imported addresses cannot be recovered from your wallet&#039;s [[#Seed|seed]] and therefore need to be secured separately for a complete backup of your wallet.&lt;br /&gt;
&lt;br /&gt;
Imported addresses can be used like any other [[#Normal Addresses|normal]] receive address with Electrum for transmission or reception of Bitcoins, and can also be (un)tagged as [[#What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?|&amp;quot;prioritized&amp;quot; or &amp;quot;frozen&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
===Deterministic Wallet===&lt;br /&gt;
====What is a &amp;quot;Deterministic Wallet&amp;quot; in Electrum?====&lt;br /&gt;
Traditionally, all new addresses (incl. the private keys of course) added to the wallet ([[#Normal Addresses|normal addresses]] or [[#Change Addresses|change addresses]]) are generated randomly. This is the case e.g. for the original &amp;quot;Satoshi Bitcoin Client&amp;quot; (at least as of today, version 0.6.2).&lt;br /&gt;
&lt;br /&gt;
Contrary to that, a Bitcoin client with a &amp;quot;Deterministic Wallet&amp;quot; will generate all new addresses accoding to a pre-defined (i.e. &amp;quot;deterministic&amp;quot;) algorithm as a function of a wallet-specific [[#Seed|seed]], which is a 128 bit number. This means, if the seed is known, all new addresses that Electrum will ever create for this wallet are known, because Electrum&#039;s algorithm is known (and open source).&lt;br /&gt;
This is a big advantage when it comes to making wallet backups:&lt;br /&gt;
* &#039;&#039;Traditionally&#039;&#039;, a wallet backup just contains the bitcoin addresses (and private keys of course) that have been created by the client by the time the backup was made. If the user performs transactions after the backup, new addresses ([[#Normal Addresses|normal]] or [[#Change Addresses|change]] addresses) will be generated and added to the wallet. These are not included in the backup yet. If the wallet in use gets lost, all the Bitcoins that are associated with the new addresses will also be lost. To avoid the risk of a too high loss, regular wallet backups are important.&lt;br /&gt;
* &#039;&#039;With a Deterministic Wallet&#039;&#039; (like with Electrum), the wallet backup only needs to contain the seed, and all new addresses generated in the future are already secured by the initial backup. Hence, regular new backups are not required!&lt;br /&gt;
&lt;br /&gt;
===Seed===&lt;br /&gt;
====What is the &amp;quot;Seed&amp;quot; of a Deterministic Wallet in Electrum?====&lt;br /&gt;
The Seed of a [[#Deterministic Wallet|deterministic wallet]] is a series of 128 random bits in Electrum.&lt;br /&gt;
For convenience, a seed can also be expressed by a sequence of 12 words in Electrum, and it also supports generation of a QR code to facilitate the backup of the seed.&lt;br /&gt;
&lt;br /&gt;
So there are 2^128 possible seeds for a deterministic wallet in Electrum.&lt;br /&gt;
For comparison, the total number of Bitcoin addresses is 2^160, and the number of atoms on earth is 2^166.&lt;br /&gt;
So there exists one Bitcoin address per 64 atoms on earth, and there exists one seed of Electrum wallets per 4.3 Billion Bitcoin addresses.&lt;br /&gt;
(By the way: The number of atoms in the complete universe is estimated as 2^266).&lt;br /&gt;
&lt;br /&gt;
===What is the &amp;quot;Gap Limit&amp;quot;?===&lt;br /&gt;
&lt;br /&gt;
The gap limit is the maximal number of contiguous unused addresses in your deterministic sequence of addresses.&lt;br /&gt;
&lt;br /&gt;
If you recover your wallet from seed, you will notice that the gap limit is asked by the recovery dialog.&lt;br /&gt;
It is used in order to decide when to stop the recovery procedure.&lt;br /&gt;
&lt;br /&gt;
If you need to have more receiving addresses in your wallet, you may increase your gap limit (expert mode).&lt;br /&gt;
This, however, means that you will need to remember the new limit in order to be able to recover your wallet from seed.&lt;br /&gt;
&lt;br /&gt;
==More on the Electrum GUI==&lt;br /&gt;
&lt;br /&gt;
===Send tab and completions===&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;pay to&amp;quot; input line does not only accept bitcoin addresses. You may type a label from your list of contacts, or an alias.&lt;br /&gt;
&lt;br /&gt;
Completions are available based on the labels of your addressbook.Example: &lt;br /&gt;
&lt;br /&gt;
[[Image:Electrum completion 0.png|450px]]&lt;br /&gt;
[[Image:Electrum completion 1.png|450px]]&lt;br /&gt;
&lt;br /&gt;
===What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?===&lt;br /&gt;
When sending Bitcoins to a foreign address, Electrum will by default use a built-in method to select the address(es) of the wallet used for sending these Bitcoins.&lt;br /&gt;
&lt;br /&gt;
* When you &#039;&#039;prioritize&#039;&#039; some of your wallet&#039;s addresses, these addresses will be used with preference. Other addresses will not be used until the prioritized addresses contain no more Bitcoins.&lt;br /&gt;
* When you &#039;&#039;freeze&#039;&#039; some of your wallet&#039;s addresses, these addresses will not be used for sending bitcoins. Instead, other addresses will be used. Sending Bitcoins is not possible if the non-frozen addresses of your wallet do not contain enough funds. &lt;br /&gt;
&lt;br /&gt;
The user can (de)prioritize or (un)freeze both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses.&lt;br /&gt;
&lt;br /&gt;
Note: Clearly, an address can not be &amp;quot;prioritized&amp;quot; and &amp;quot;frozen&amp;quot; at the same time.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Tx&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab (own wallet&#039;s addresses) and &amp;quot;Contacts&amp;quot; tab (foreing addresses).&lt;br /&gt;
&lt;br /&gt;
Tx stands for &amp;quot;Transaction&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The Tx column in Electrum displays a number for each Bitcoin address in the address list, both for own addresses (&amp;quot;Receive&amp;quot; tab) and for foreing addresses (&amp;quot;Contacts&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Receive&amp;quot; tab (own addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of _incoming_ Bitcoin transactions that have ever been sent to this address.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Contacts&amp;quot; tab (foreign addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of Bitcoin transactions that have ever been carried out from addresses of the current wallet towards this contact address&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Balance&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
The balance column indicates the amount of Bitcoins belonging to the given address.&lt;br /&gt;
The individual balances add up to the total balance of your wallet.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Flag&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
This column indicates certain properties of the different addresses:&lt;br /&gt;
* C = [[#Change Addresses|Change address]] (without a &amp;quot;C&amp;quot; it means it is a [[#Normal Addresses|normal address]])&lt;br /&gt;
* P = Prioritized address&lt;br /&gt;
* F = Frozen address&lt;br /&gt;
* I = [[#Imported Addresses|Imported address]]&lt;br /&gt;
&lt;br /&gt;
Note: P and F flags can be applied to both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses, and also to [[#Imported Addresses|imported addresses]].&lt;br /&gt;
&lt;br /&gt;
===What do colors mean?===&lt;br /&gt;
In the Receive tab:&lt;br /&gt;
*green = prioritized&lt;br /&gt;
*blue = frozen&lt;br /&gt;
In the Contacts tab:&lt;br /&gt;
*gray = alias&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
=== &#039;transaction rejected by memorypool&#039; errors ===&lt;br /&gt;
&lt;br /&gt;
When you send a transaction, there is a delay before the Electrum client displays the transaction in its history.&lt;br /&gt;
This is because the server polls bitcoind&#039;s memorypool every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
If you create another transaction during this interval, during which the first tx is not displayed,&lt;br /&gt;
then your client will pick the same coins again, and the transaction will be rejected as a [[Double-spending|double spend]].&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://ecdsa.org/electrum Electrum] project website&lt;br /&gt;
* [https://gitorious.org/electrum Electrum] project source (gitorius)&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=50936.msg950497#msg950497 Electrum Forum] - here this documentation was started&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27791</id>
		<title>Electrum/Documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27791"/>
		<updated>2012-06-12T23:39:03Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* What is the &amp;quot;Gap Limit&amp;quot;? */ clarified: no danger of BTC loss when forgetting gap limit - can always recover from seed when setting a very large gap limit value&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation of Electrum Bitcoin Client (Focus on the GUI)==&lt;br /&gt;
This page tries to document certain aspects of the [[Electrum|Electrum]] Bitcoin Client. The focus is on explaining certain aspects of its GUI, such that it gets easier for the user to understand its use.&lt;br /&gt;
&lt;br /&gt;
More documentation, especially with regard to command line parameters, can be found at the parent page of this Wiki, i.e. [[Electrum|here]].&lt;br /&gt;
&lt;br /&gt;
===Version Info===&lt;br /&gt;
Unless stated otherwise in particular sub-sections, the present state of this documentation is based on&lt;br /&gt;
* &#039;&#039;&#039;Electrum version 0.58&#039;&#039;&#039;&lt;br /&gt;
As this documentation gets updated, this &amp;quot;version info&amp;quot; can be updated, too!&lt;br /&gt;
&lt;br /&gt;
Later versions of Electrum may add new features or deviate from this description to some extend.&lt;br /&gt;
&lt;br /&gt;
===Open/Unclear Points===&lt;br /&gt;
Text in curly brackets {like this} means that the author(s) of this documentation are not really sure about this...&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; other authors are welcome to correct/clarify&lt;br /&gt;
&lt;br /&gt;
==What is a &amp;quot;Wallet&amp;quot; and a &amp;quot;Bitcoin Address&amp;quot;?==&lt;br /&gt;
* (General, not specific to Electrum)&lt;br /&gt;
&lt;br /&gt;
Your wallet is a list of Bitcoin addresses (more precisely: a list of privat/public key pairs). Each address &amp;quot;contains&amp;quot; (or is associated with) a certain amount of Bitcoins at a given time.&lt;br /&gt;
&lt;br /&gt;
Your wallet&#039;s balance is the sum of all Bitcoins of all your wallet&#039;s Bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
Your wallet consists of both [[#Normal Addresses|normal addresses]] and [[#Change Addresses|change addresses]]. Although they are fully equivalent from the Bitcoin protocol&#039;s point of view, they are different in how they are used by Bitcoin clients like Electrum.&lt;br /&gt;
&lt;br /&gt;
===Normal Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====How are New &amp;quot;Normal Addresses&amp;quot; Created for my Wallet?====&lt;br /&gt;
A Bitcoin client allows you to trigger the generation of a new Bitcoin address either manually, or it generates new addresses automatically upon certain conditions. The latter applies to Electrum: Depending on the &amp;quot;[[#What is the &amp;quot;Gap Limit&amp;quot;?|gap limit]]&amp;quot; setting in Electrum&#039;s program preferences, there will always be a certain number of unused addresses showing up in your list of receive addresses (=your own wallet&#039;s addresses), and as these addresses get used, new ones will show up automatically.&lt;br /&gt;
&lt;br /&gt;
Typically you want to use a new address for receiving Bitcoins from somebody, instead of using any of your wallet&#039;s present addresses that have already been used for earlier transactions. This is to protect your privacy, because all Bitcoins transfers are published in the blockchain and can be read by anyone.&lt;br /&gt;
&lt;br /&gt;
Another way of adding addresses to your wallet is to [[#Imported Addresses|import]] private keys (with their addresses of course), using Electrum&#039;s [[Electrum|command line options]]. See section about [[#Imported Addresses|imported addresses]] for more details.&lt;br /&gt;
&lt;br /&gt;
===Change Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====What is a &amp;quot;Change Address&amp;quot;, and why is it useful?====&lt;br /&gt;
The concept of change addresses is a feature not of the Bitcoin protocol, but of a Bitcoin client. It is implemented not only in Electrum but in most Bitcoin clients, including the original &amp;quot;Satoshi&amp;quot; Bitcoin client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How it works:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Whenever your Bitcoin client (e.g. Electrum) sends Bitcoins from your wallet&#039;s address &amp;quot;A&amp;quot; to a foreing address &amp;quot;B&amp;quot;, a new change address &amp;quot;C&amp;quot; is created by Electrum and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Example: Address &amp;quot;A&amp;quot; has 20 BTC. Electrum sends 9 BTC from &amp;quot;A&amp;quot; to &amp;quot;B&amp;quot;. The change (20-9 = 11 BTC) is sent to the &amp;quot;change address&amp;quot; &amp;quot;C&amp;quot;. For this purpose, address &amp;quot;C&amp;quot; is created by Electrum at this moment and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Exception: If all the Bitcoins of &amp;quot;A&amp;quot; are sent to &amp;quot;B&amp;quot;, there is no need for creating a change address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Actually, Bitcoin clients can also work without change addresses. In this case, the change would be sent back to &amp;quot;A&amp;quot; instead of the new address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why the concept of &amp;quot;change addresses&amp;quot; is useful:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Using a new change address makes it more difficult for other people (by analyzing the blockchain) to track how many Bitcoins you have or where you&#039;re spending them.&lt;br /&gt;
* It also conceals which output is the &amp;quot;spend&amp;quot; and which is the &amp;quot;change&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Imported Addresses===&lt;br /&gt;
Instead of generating new addresses in the default way from the wallet&#039;s [[#Seed|seed]], Electrum also allows you to import addresses (and their private keys of course) from external sources, e.g. from another Bitcoin client&#039;s wallet. For this, use Electrum&#039;s [[Electrum|command line]] options. Note that imported addresses cannot be recovered from your wallet&#039;s [[#Seed|seed]] and therefore need to be secured separately for a complete backup of your wallet.&lt;br /&gt;
&lt;br /&gt;
Imported addresses can be used like any other [[#Normal Addresses|normal]] receive address with Electrum for transmission or reception of Bitcoins, and can also be (un)tagged as [[#What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?|&amp;quot;prioritized&amp;quot; or &amp;quot;frozen&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
===Deterministic Wallet===&lt;br /&gt;
====What is a &amp;quot;Deterministic Wallet&amp;quot; in Electrum?====&lt;br /&gt;
Traditionally, all new addresses (incl. the private keys of course) added to the wallet ([[#Normal Addresses|normal addresses]] or [[#Change Addresses|change addresses]]) are generated randomly. This is the case e.g. for the original &amp;quot;Satoshi Bitcoin Client&amp;quot; (at least as of today, version 0.6.2).&lt;br /&gt;
&lt;br /&gt;
Contrary to that, a Bitcoin client with a &amp;quot;Deterministic Wallet&amp;quot; will generate all new addresses accoding to a pre-defined (i.e. &amp;quot;deterministic&amp;quot;) algorithm as a function of a wallet-specific [[#Seed|seed]], which is a 128 bit number. This means, if the seed is known, all new addresses that Electrum will ever create for this wallet are known, because Electrum&#039;s algorithm is known (and open source).&lt;br /&gt;
This is a big advantage when it comes to making wallet backups:&lt;br /&gt;
* &#039;&#039;Traditionally&#039;&#039;, a wallet backup just contains the bitcoin addresses (and private keys of course) that have been created by the client by the time the backup was made. If the user performs transactions after the backup, new addresses ([[#Normal Addresses|normal]] or [[#Change Addresses|change]] addresses) will be generated and added to the wallet. These are not included in the backup yet. If the wallet in use gets lost, all the Bitcoins that are associated with the new addresses will also be lost. To avoid the risk of a too high loss, regular wallet backups are important.&lt;br /&gt;
* &#039;&#039;With a Deterministic Wallet&#039;&#039; (like with Electrum), the wallet backup only needs to contain the seed, and all new addresses generated in the future are already secured by the initial backup. Hence, regular new backups are not required!&lt;br /&gt;
&lt;br /&gt;
===Seed===&lt;br /&gt;
====What is the &amp;quot;Seed&amp;quot; of a Deterministic Wallet in Electrum?====&lt;br /&gt;
The Seed of a [[#Deterministic Wallet|deterministic wallet]] is a series of 128 random bits in Electrum.&lt;br /&gt;
For convenience, a seed can also be expressed by a sequence of 12 words in Electrum, and it also supports generation of a QR code to facilitate the backup of the seed.&lt;br /&gt;
&lt;br /&gt;
So there are 2^128 possible seeds for a deterministic wallet in Electrum.&lt;br /&gt;
For comparison, the total number of Bitcoin addresses is 2^160, and the number of atoms on earth is 2^166.&lt;br /&gt;
So there exists one Bitcoin address per 1 Million atoms on earth, and there exists one seed of Electrum wallets per 4.3 Billion Bitcoin addresses.&lt;br /&gt;
(By the way: The number of atoms in the complete universe is estimated as 2^266).&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
Open Point: It is _not clear_ whether the algorithm of deterministic address generation is designed such that for any two seeds &amp;quot;S1&amp;quot; and &amp;quot;S2&amp;quot; (out of the 2^128 possible different seeds) the following condition holds true:&lt;br /&gt;
* If 4.3 Billion (2^32 to be exact) new addresses are calculated from each S1 and from S2, does the algorithm guarantee that there will be no collision between the set of 2^32 addresses from S1 and the set of 2^32 addresses from S2?&lt;br /&gt;
If this condition does not hold true, it needs to be clarified whether the use of deterministic wallets still bares an acceptably low probability of address collisions.&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
===What is the &amp;quot;Gap Limit&amp;quot;?===&lt;br /&gt;
&lt;br /&gt;
The gap limit is the maximal number of contiguous unused addresses in your deterministic sequence of addresses.&lt;br /&gt;
&lt;br /&gt;
If you recover your wallet from seed, you will notice that the gap limit is asked by the recovery dialog.&lt;br /&gt;
It is used in order to decide when to stop the recovery procedure.&lt;br /&gt;
&lt;br /&gt;
If you need to have more receiving addresses in your wallet, you may increase your gap limit (expert mode).&lt;br /&gt;
This, however, means that you will need to remember the new limit in order to be able to recover your wallet from seed.&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
To avoid misunderstandings and panic: This does not mean that you will irrecoverably loose your funds when you have forgotten the gap limit and want to recover your wallet from seed. It just means:&lt;br /&gt;
* If you enter a too low gap limit when recovering a wallet from seed, it may happen that some of the later addresses in the deterministic sequence of addresses are not recovered although they have a balance&amp;gt;0, such that your wallet will not show the full balance.&lt;br /&gt;
* If you enter a too high value for the gap limit when recovering a wallet from seed, you will unnecessarily generate too many new addresses that will then show up in your wallet, all with zero balance. But at least all your funds are recovered in this case.&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==More on the Electrum GUI==&lt;br /&gt;
===What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?===&lt;br /&gt;
When sending Bitcoins to a foreign address, Electrum will by default use a built-in method to select the address(es) of the wallet used for sending these Bitcoins.&lt;br /&gt;
&lt;br /&gt;
* When you &#039;&#039;prioritize&#039;&#039; some of your wallet&#039;s addresses, these addresses will be used with preference. Other addresses will not be used until the prioritized addresses contain no more Bitcoins.&lt;br /&gt;
* When you &#039;&#039;freeze&#039;&#039; some of your wallet&#039;s addresses, these addresses will not be used for sending bitcoins. Instead, other addresses will be used. Sending Bitcoins is not possible if the non-frozen addresses of your wallet do not contain enough funds. &lt;br /&gt;
&lt;br /&gt;
The user can (de)prioritize or (un)freeze both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses.&lt;br /&gt;
&lt;br /&gt;
Note: Clearly, an address can not be &amp;quot;prioritized&amp;quot; and &amp;quot;frozen&amp;quot; at the same time.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Tx&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab (own wallet&#039;s addresses) and &amp;quot;Contacts&amp;quot; tab (foreing addresses).&lt;br /&gt;
&lt;br /&gt;
Tx stands for {... ?? &amp;quot;Transaction&amp;quot;? &amp;quot;Transmission&amp;quot; ?? ...}&lt;br /&gt;
&lt;br /&gt;
The Tx column in Electrum displays a number for each Bitcoin address in the address list, both for own addresses (&amp;quot;Receive&amp;quot; tab) and for foreing addresses (&amp;quot;Contacts&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Receive&amp;quot; tab (own addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of _incoming_ Bitcoin transactions that have ever been sent to this address.&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
The number of outgoing transactions is apparently not counted. It is unclear why the column is called &amp;quot;Tx&amp;quot; and not &amp;quot;Rx&amp;quot;, because it indicates the number of times that Bitcoins have been sent to this address, i.e. how often this address has &amp;quot;received&amp;quot; Bitcoins.&lt;br /&gt;
Does this &amp;quot;Tx&amp;quot; come from blockchain/blockexplorer terminology? Or why is it called &amp;quot;Tx&amp;quot; (&amp;quot;transmit&amp;quot;) and not &amp;quot;Rx&amp;quot; (&amp;quot;receive&amp;quot;)? To be clarified.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Contacts&amp;quot; tab (foreign addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of Bitcoin transactions that have ever been carried out from addresses of the current wallet towards this contact address&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Balance&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
The balance column indicates the amount of Bitcoins belonging to the given address.&lt;br /&gt;
The individual balances add up to the total balance of your wallet.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Flag&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
This column indicates certain properties of the different addresses:&lt;br /&gt;
* C = [[#Change Addresses|Change address]] (without a &amp;quot;C&amp;quot; it means it is a [[#Normal Addresses|normal address]])&lt;br /&gt;
* P = Prioritized address&lt;br /&gt;
* F = Frozen address&lt;br /&gt;
* I = [[#Imported Addresses|Imported address]]&lt;br /&gt;
&lt;br /&gt;
Note: P and F flags can be applied to both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses, and also to [[#Imported Addresses|imported addresses]].&lt;br /&gt;
&lt;br /&gt;
===What do colors mean?===&lt;br /&gt;
In the Receive tab:&lt;br /&gt;
*green = prioritized&lt;br /&gt;
*blue = frozen&lt;br /&gt;
In the Contacts tab:&lt;br /&gt;
*gray = alias&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
=== &#039;transaction rejected by memorypool&#039; errors ===&lt;br /&gt;
&lt;br /&gt;
When you send a transaction, there is a delay before the Electrum client displays the transaction in its history.&lt;br /&gt;
This is because the server polls bitcoind&#039;s memorypool every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
If you create another transaction during this interval, during which the first tx is not displayed,&lt;br /&gt;
then your client will pick the same coins again, and the transaction will be rejected as a double spend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://ecdsa.org/electrum Electrum] project website&lt;br /&gt;
* [https://gitorious.org/electrum Electrum] project source (gitorius)&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=50936.msg950497#msg950497 Electrum Forum] - here this documentation was started&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27790</id>
		<title>Electrum/Documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27790"/>
		<updated>2012-06-12T23:11:11Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Imported Addresses */ editorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation of Electrum Bitcoin Client (Focus on the GUI)==&lt;br /&gt;
This page tries to document certain aspects of the [[Electrum|Electrum]] Bitcoin Client. The focus is on explaining certain aspects of its GUI, such that it gets easier for the user to understand its use.&lt;br /&gt;
&lt;br /&gt;
More documentation, especially with regard to command line parameters, can be found at the parent page of this Wiki, i.e. [[Electrum|here]].&lt;br /&gt;
&lt;br /&gt;
===Version Info===&lt;br /&gt;
Unless stated otherwise in particular sub-sections, the present state of this documentation is based on&lt;br /&gt;
* &#039;&#039;&#039;Electrum version 0.58&#039;&#039;&#039;&lt;br /&gt;
As this documentation gets updated, this &amp;quot;version info&amp;quot; can be updated, too!&lt;br /&gt;
&lt;br /&gt;
Later versions of Electrum may add new features or deviate from this description to some extend.&lt;br /&gt;
&lt;br /&gt;
===Open/Unclear Points===&lt;br /&gt;
Text in curly brackets {like this} means that the author(s) of this documentation are not really sure about this...&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; other authors are welcome to correct/clarify&lt;br /&gt;
&lt;br /&gt;
==What is a &amp;quot;Wallet&amp;quot; and a &amp;quot;Bitcoin Address&amp;quot;?==&lt;br /&gt;
* (General, not specific to Electrum)&lt;br /&gt;
&lt;br /&gt;
Your wallet is a list of Bitcoin addresses (more precisely: a list of privat/public key pairs). Each address &amp;quot;contains&amp;quot; (or is associated with) a certain amount of Bitcoins at a given time.&lt;br /&gt;
&lt;br /&gt;
Your wallet&#039;s balance is the sum of all Bitcoins of all your wallet&#039;s Bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
Your wallet consists of both [[#Normal Addresses|normal addresses]] and [[#Change Addresses|change addresses]]. Although they are fully equivalent from the Bitcoin protocol&#039;s point of view, they are different in how they are used by Bitcoin clients like Electrum.&lt;br /&gt;
&lt;br /&gt;
===Normal Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====How are New &amp;quot;Normal Addresses&amp;quot; Created for my Wallet?====&lt;br /&gt;
A Bitcoin client allows you to trigger the generation of a new Bitcoin address either manually, or it generates new addresses automatically upon certain conditions. The latter applies to Electrum: Depending on the &amp;quot;[[#What is the &amp;quot;Gap Limit&amp;quot;?|gap limit]]&amp;quot; setting in Electrum&#039;s program preferences, there will always be a certain number of unused addresses showing up in your list of receive addresses (=your own wallet&#039;s addresses), and as these addresses get used, new ones will show up automatically.&lt;br /&gt;
&lt;br /&gt;
Typically you want to use a new address for receiving Bitcoins from somebody, instead of using any of your wallet&#039;s present addresses that have already been used for earlier transactions. This is to protect your privacy, because all Bitcoins transfers are published in the blockchain and can be read by anyone.&lt;br /&gt;
&lt;br /&gt;
Another way of adding addresses to your wallet is to [[#Imported Addresses|import]] private keys (with their addresses of course), using Electrum&#039;s [[Electrum|command line options]]. See section about [[#Imported Addresses|imported addresses]] for more details.&lt;br /&gt;
&lt;br /&gt;
===Change Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====What is a &amp;quot;Change Address&amp;quot;, and why is it useful?====&lt;br /&gt;
The concept of change addresses is a feature not of the Bitcoin protocol, but of a Bitcoin client. It is implemented not only in Electrum but in most Bitcoin clients, including the original &amp;quot;Satoshi&amp;quot; Bitcoin client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How it works:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Whenever your Bitcoin client (e.g. Electrum) sends Bitcoins from your wallet&#039;s address &amp;quot;A&amp;quot; to a foreing address &amp;quot;B&amp;quot;, a new change address &amp;quot;C&amp;quot; is created by Electrum and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Example: Address &amp;quot;A&amp;quot; has 20 BTC. Electrum sends 9 BTC from &amp;quot;A&amp;quot; to &amp;quot;B&amp;quot;. The change (20-9 = 11 BTC) is sent to the &amp;quot;change address&amp;quot; &amp;quot;C&amp;quot;. For this purpose, address &amp;quot;C&amp;quot; is created by Electrum at this moment and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Exception: If all the Bitcoins of &amp;quot;A&amp;quot; are sent to &amp;quot;B&amp;quot;, there is no need for creating a change address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Actually, Bitcoin clients can also work without change addresses. In this case, the change would be sent back to &amp;quot;A&amp;quot; instead of the new address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why the concept of &amp;quot;change addresses&amp;quot; is useful:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Using a new change address makes it more difficult for other people (by analyzing the blockchain) to track how many Bitcoins you have or where you&#039;re spending them.&lt;br /&gt;
* It also conceals which output is the &amp;quot;spend&amp;quot; and which is the &amp;quot;change&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Imported Addresses===&lt;br /&gt;
Instead of generating new addresses in the default way from the wallet&#039;s [[#Seed|seed]], Electrum also allows you to import addresses (and their private keys of course) from external sources, e.g. from another Bitcoin client&#039;s wallet. For this, use Electrum&#039;s [[Electrum|command line]] options. Note that imported addresses cannot be recovered from your wallet&#039;s [[#Seed|seed]] and therefore need to be secured separately for a complete backup of your wallet.&lt;br /&gt;
&lt;br /&gt;
Imported addresses can be used like any other [[#Normal Addresses|normal]] receive address with Electrum for transmission or reception of Bitcoins, and can also be (un)tagged as [[#What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?|&amp;quot;prioritized&amp;quot; or &amp;quot;frozen&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
===Deterministic Wallet===&lt;br /&gt;
====What is a &amp;quot;Deterministic Wallet&amp;quot; in Electrum?====&lt;br /&gt;
Traditionally, all new addresses (incl. the private keys of course) added to the wallet ([[#Normal Addresses|normal addresses]] or [[#Change Addresses|change addresses]]) are generated randomly. This is the case e.g. for the original &amp;quot;Satoshi Bitcoin Client&amp;quot; (at least as of today, version 0.6.2).&lt;br /&gt;
&lt;br /&gt;
Contrary to that, a Bitcoin client with a &amp;quot;Deterministic Wallet&amp;quot; will generate all new addresses accoding to a pre-defined (i.e. &amp;quot;deterministic&amp;quot;) algorithm as a function of a wallet-specific [[#Seed|seed]], which is a 128 bit number. This means, if the seed is known, all new addresses that Electrum will ever create for this wallet are known, because Electrum&#039;s algorithm is known (and open source).&lt;br /&gt;
This is a big advantage when it comes to making wallet backups:&lt;br /&gt;
* &#039;&#039;Traditionally&#039;&#039;, a wallet backup just contains the bitcoin addresses (and private keys of course) that have been created by the client by the time the backup was made. If the user performs transactions after the backup, new addresses ([[#Normal Addresses|normal]] or [[#Change Addresses|change]] addresses) will be generated and added to the wallet. These are not included in the backup yet. If the wallet in use gets lost, all the Bitcoins that are associated with the new addresses will also be lost. To avoid the risk of a too high loss, regular wallet backups are important.&lt;br /&gt;
* &#039;&#039;With a Deterministic Wallet&#039;&#039; (like with Electrum), the wallet backup only needs to contain the seed, and all new addresses generated in the future are already secured by the initial backup. Hence, regular new backups are not required!&lt;br /&gt;
&lt;br /&gt;
===Seed===&lt;br /&gt;
====What is the &amp;quot;Seed&amp;quot; of a Deterministic Wallet in Electrum?====&lt;br /&gt;
The Seed of a [[#Deterministic Wallet|deterministic wallet]] is a series of 128 random bits in Electrum.&lt;br /&gt;
For convenience, a seed can also be expressed by a sequence of 12 words in Electrum, and it also supports generation of a QR code to facilitate the backup of the seed.&lt;br /&gt;
&lt;br /&gt;
So there are 2^128 possible seeds for a deterministic wallet in Electrum.&lt;br /&gt;
For comparison, the total number of Bitcoin addresses is 2^160, and the number of atoms on earth is 2^166.&lt;br /&gt;
So there exists one Bitcoin address per 1 Million atoms on earth, and there exists one seed of Electrum wallets per 4.3 Billion Bitcoin addresses.&lt;br /&gt;
(By the way: The number of atoms in the complete universe is estimated as 2^266).&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
Open Point: It is _not clear_ whether the algorithm of deterministic address generation is designed such that for any two seeds &amp;quot;S1&amp;quot; and &amp;quot;S2&amp;quot; (out of the 2^128 possible different seeds) the following condition holds true:&lt;br /&gt;
* If 4.3 Billion (2^32 to be exact) new addresses are calculated from each S1 and from S2, does the algorithm guarantee that there will be no collision between the set of 2^32 addresses from S1 and the set of 2^32 addresses from S2?&lt;br /&gt;
If this condition does not hold true, it needs to be clarified whether the use of deterministic wallets still bares an acceptably low probability of address collisions.&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
===What is the &amp;quot;Gap Limit&amp;quot;?===&lt;br /&gt;
&lt;br /&gt;
The gap limit is the maximal number of contiguous unused addresses in your deterministic sequence of addresses.&lt;br /&gt;
&lt;br /&gt;
If you recover your wallet from seed, you will notice that the gap limit is asked by the recovery dialog.&lt;br /&gt;
It is used in order to decide when to stop the recovery procedure.&lt;br /&gt;
&lt;br /&gt;
If you need to have more receiving addresses in your wallet, you may increase your gap limit (expert mode).&lt;br /&gt;
This, however, means that you will need to remember the new limit in order to be able to recover your wallet from seed.&lt;br /&gt;
&lt;br /&gt;
==More on the Electrum GUI==&lt;br /&gt;
===What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?===&lt;br /&gt;
When sending Bitcoins to a foreign address, Electrum will by default use a built-in method to select the address(es) of the wallet used for sending these Bitcoins.&lt;br /&gt;
&lt;br /&gt;
* When you &#039;&#039;prioritize&#039;&#039; some of your wallet&#039;s addresses, these addresses will be used with preference. Other addresses will not be used until the prioritized addresses contain no more Bitcoins.&lt;br /&gt;
* When you &#039;&#039;freeze&#039;&#039; some of your wallet&#039;s addresses, these addresses will not be used for sending bitcoins. Instead, other addresses will be used. Sending Bitcoins is not possible if the non-frozen addresses of your wallet do not contain enough funds. &lt;br /&gt;
&lt;br /&gt;
The user can (de)prioritize or (un)freeze both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses.&lt;br /&gt;
&lt;br /&gt;
Note: Clearly, an address can not be &amp;quot;prioritized&amp;quot; and &amp;quot;frozen&amp;quot; at the same time.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Tx&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab (own wallet&#039;s addresses) and &amp;quot;Contacts&amp;quot; tab (foreing addresses).&lt;br /&gt;
&lt;br /&gt;
Tx stands for {... ?? &amp;quot;Transaction&amp;quot;? &amp;quot;Transmission&amp;quot; ?? ...}&lt;br /&gt;
&lt;br /&gt;
The Tx column in Electrum displays a number for each Bitcoin address in the address list, both for own addresses (&amp;quot;Receive&amp;quot; tab) and for foreing addresses (&amp;quot;Contacts&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Receive&amp;quot; tab (own addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of _incoming_ Bitcoin transactions that have ever been sent to this address.&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
The number of outgoing transactions is apparently not counted. It is unclear why the column is called &amp;quot;Tx&amp;quot; and not &amp;quot;Rx&amp;quot;, because it indicates the number of times that Bitcoins have been sent to this address, i.e. how often this address has &amp;quot;received&amp;quot; Bitcoins.&lt;br /&gt;
Does this &amp;quot;Tx&amp;quot; come from blockchain/blockexplorer terminology? Or why is it called &amp;quot;Tx&amp;quot; (&amp;quot;transmit&amp;quot;) and not &amp;quot;Rx&amp;quot; (&amp;quot;receive&amp;quot;)? To be clarified.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Contacts&amp;quot; tab (foreign addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of Bitcoin transactions that have ever been carried out from addresses of the current wallet towards this contact address&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Balance&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
The balance column indicates the amount of Bitcoins belonging to the given address.&lt;br /&gt;
The individual balances add up to the total balance of your wallet.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Flag&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
This column indicates certain properties of the different addresses:&lt;br /&gt;
* C = [[#Change Addresses|Change address]] (without a &amp;quot;C&amp;quot; it means it is a [[#Normal Addresses|normal address]])&lt;br /&gt;
* P = Prioritized address&lt;br /&gt;
* F = Frozen address&lt;br /&gt;
* I = [[#Imported Addresses|Imported address]]&lt;br /&gt;
&lt;br /&gt;
Note: P and F flags can be applied to both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses, and also to [[#Imported Addresses|imported addresses]].&lt;br /&gt;
&lt;br /&gt;
===What do colors mean?===&lt;br /&gt;
In the Receive tab:&lt;br /&gt;
*green = prioritized&lt;br /&gt;
*blue = frozen&lt;br /&gt;
In the Contacts tab:&lt;br /&gt;
*gray = alias&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
=== &#039;transaction rejected by memorypool&#039; errors ===&lt;br /&gt;
&lt;br /&gt;
When you send a transaction, there is a delay before the Electrum client displays the transaction in its history.&lt;br /&gt;
This is because the server polls bitcoind&#039;s memorypool every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
If you create another transaction during this interval, during which the first tx is not displayed,&lt;br /&gt;
then your client will pick the same coins again, and the transaction will be rejected as a double spend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://ecdsa.org/electrum Electrum] project website&lt;br /&gt;
* [https://gitorious.org/electrum Electrum] project source (gitorius)&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=50936.msg950497#msg950497 Electrum Forum] - here this documentation was started&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27789</id>
		<title>Electrum/Documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27789"/>
		<updated>2012-06-12T23:06:01Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Version Info */ editorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation of Electrum Bitcoin Client (Focus on the GUI)==&lt;br /&gt;
This page tries to document certain aspects of the [[Electrum|Electrum]] Bitcoin Client. The focus is on explaining certain aspects of its GUI, such that it gets easier for the user to understand its use.&lt;br /&gt;
&lt;br /&gt;
More documentation, especially with regard to command line parameters, can be found at the parent page of this Wiki, i.e. [[Electrum|here]].&lt;br /&gt;
&lt;br /&gt;
===Version Info===&lt;br /&gt;
Unless stated otherwise in particular sub-sections, the present state of this documentation is based on&lt;br /&gt;
* &#039;&#039;&#039;Electrum version 0.58&#039;&#039;&#039;&lt;br /&gt;
As this documentation gets updated, this &amp;quot;version info&amp;quot; can be updated, too!&lt;br /&gt;
&lt;br /&gt;
Later versions of Electrum may add new features or deviate from this description to some extend.&lt;br /&gt;
&lt;br /&gt;
===Open/Unclear Points===&lt;br /&gt;
Text in curly brackets {like this} means that the author(s) of this documentation are not really sure about this...&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; other authors are welcome to correct/clarify&lt;br /&gt;
&lt;br /&gt;
==What is a &amp;quot;Wallet&amp;quot; and a &amp;quot;Bitcoin Address&amp;quot;?==&lt;br /&gt;
* (General, not specific to Electrum)&lt;br /&gt;
&lt;br /&gt;
Your wallet is a list of Bitcoin addresses (more precisely: a list of privat/public key pairs). Each address &amp;quot;contains&amp;quot; (or is associated with) a certain amount of Bitcoins at a given time.&lt;br /&gt;
&lt;br /&gt;
Your wallet&#039;s balance is the sum of all Bitcoins of all your wallet&#039;s Bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
Your wallet consists of both [[#Normal Addresses|normal addresses]] and [[#Change Addresses|change addresses]]. Although they are fully equivalent from the Bitcoin protocol&#039;s point of view, they are different in how they are used by Bitcoin clients like Electrum.&lt;br /&gt;
&lt;br /&gt;
===Normal Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====How are New &amp;quot;Normal Addresses&amp;quot; Created for my Wallet?====&lt;br /&gt;
A Bitcoin client allows you to trigger the generation of a new Bitcoin address either manually, or it generates new addresses automatically upon certain conditions. The latter applies to Electrum: Depending on the &amp;quot;[[#What is the &amp;quot;Gap Limit&amp;quot;?|gap limit]]&amp;quot; setting in Electrum&#039;s program preferences, there will always be a certain number of unused addresses showing up in your list of receive addresses (=your own wallet&#039;s addresses), and as these addresses get used, new ones will show up automatically.&lt;br /&gt;
&lt;br /&gt;
Typically you want to use a new address for receiving Bitcoins from somebody, instead of using any of your wallet&#039;s present addresses that have already been used for earlier transactions. This is to protect your privacy, because all Bitcoins transfers are published in the blockchain and can be read by anyone.&lt;br /&gt;
&lt;br /&gt;
Another way of adding addresses to your wallet is to [[#Imported Addresses|import]] private keys (with their addresses of course), using Electrum&#039;s [[Electrum|command line options]]. See section about [[#Imported Addresses|imported addresses]] for more details.&lt;br /&gt;
&lt;br /&gt;
===Change Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====What is a &amp;quot;Change Address&amp;quot;, and why is it useful?====&lt;br /&gt;
The concept of change addresses is a feature not of the Bitcoin protocol, but of a Bitcoin client. It is implemented not only in Electrum but in most Bitcoin clients, including the original &amp;quot;Satoshi&amp;quot; Bitcoin client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How it works:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Whenever your Bitcoin client (e.g. Electrum) sends Bitcoins from your wallet&#039;s address &amp;quot;A&amp;quot; to a foreing address &amp;quot;B&amp;quot;, a new change address &amp;quot;C&amp;quot; is created by Electrum and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Example: Address &amp;quot;A&amp;quot; has 20 BTC. Electrum sends 9 BTC from &amp;quot;A&amp;quot; to &amp;quot;B&amp;quot;. The change (20-9 = 11 BTC) is sent to the &amp;quot;change address&amp;quot; &amp;quot;C&amp;quot;. For this purpose, address &amp;quot;C&amp;quot; is created by Electrum at this moment and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Exception: If all the Bitcoins of &amp;quot;A&amp;quot; are sent to &amp;quot;B&amp;quot;, there is no need for creating a change address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Actually, Bitcoin clients can also work without change addresses. In this case, the change would be sent back to &amp;quot;A&amp;quot; instead of the new address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why the concept of &amp;quot;change addresses&amp;quot; is useful:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Using a new change address makes it more difficult for other people (by analyzing the blockchain) to track how many Bitcoins you have or where you&#039;re spending them.&lt;br /&gt;
* It also conceals which output is the &amp;quot;spend&amp;quot; and which is the &amp;quot;change&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Imported Addresses===&lt;br /&gt;
Instead of generating new addresses in the default way from the wallet&#039;s [[#Seed|seed]], Electrum also allows you to import addresses (and their private keys of course) from external sources, e.g. from another Bitcoin client&#039;s wallet. For this, use Electrum&#039;s [[Electrum|command line]] options. Note that imported addresses cannot be derived from your wallet&#039;s [[#Seed|seed]] and therefore need to be secured separately for a complete backup of your wallet.&lt;br /&gt;
&lt;br /&gt;
Imported addresses can be used like any other [[#Normal Addresses|normal]] receive address with Electrum for transmission or reception of Bitcoins, and can also be (un)tagged as [[#What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?|&amp;quot;prioritized&amp;quot; or &amp;quot;frozen&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
===Deterministic Wallet===&lt;br /&gt;
====What is a &amp;quot;Deterministic Wallet&amp;quot; in Electrum?====&lt;br /&gt;
Traditionally, all new addresses (incl. the private keys of course) added to the wallet ([[#Normal Addresses|normal addresses]] or [[#Change Addresses|change addresses]]) are generated randomly. This is the case e.g. for the original &amp;quot;Satoshi Bitcoin Client&amp;quot; (at least as of today, version 0.6.2).&lt;br /&gt;
&lt;br /&gt;
Contrary to that, a Bitcoin client with a &amp;quot;Deterministic Wallet&amp;quot; will generate all new addresses accoding to a pre-defined (i.e. &amp;quot;deterministic&amp;quot;) algorithm as a function of a wallet-specific [[#Seed|seed]], which is a 128 bit number. This means, if the seed is known, all new addresses that Electrum will ever create for this wallet are known, because Electrum&#039;s algorithm is known (and open source).&lt;br /&gt;
This is a big advantage when it comes to making wallet backups:&lt;br /&gt;
* &#039;&#039;Traditionally&#039;&#039;, a wallet backup just contains the bitcoin addresses (and private keys of course) that have been created by the client by the time the backup was made. If the user performs transactions after the backup, new addresses ([[#Normal Addresses|normal]] or [[#Change Addresses|change]] addresses) will be generated and added to the wallet. These are not included in the backup yet. If the wallet in use gets lost, all the Bitcoins that are associated with the new addresses will also be lost. To avoid the risk of a too high loss, regular wallet backups are important.&lt;br /&gt;
* &#039;&#039;With a Deterministic Wallet&#039;&#039; (like with Electrum), the wallet backup only needs to contain the seed, and all new addresses generated in the future are already secured by the initial backup. Hence, regular new backups are not required!&lt;br /&gt;
&lt;br /&gt;
===Seed===&lt;br /&gt;
====What is the &amp;quot;Seed&amp;quot; of a Deterministic Wallet in Electrum?====&lt;br /&gt;
The Seed of a [[#Deterministic Wallet|deterministic wallet]] is a series of 128 random bits in Electrum.&lt;br /&gt;
For convenience, a seed can also be expressed by a sequence of 12 words in Electrum, and it also supports generation of a QR code to facilitate the backup of the seed.&lt;br /&gt;
&lt;br /&gt;
So there are 2^128 possible seeds for a deterministic wallet in Electrum.&lt;br /&gt;
For comparison, the total number of Bitcoin addresses is 2^160, and the number of atoms on earth is 2^166.&lt;br /&gt;
So there exists one Bitcoin address per 1 Million atoms on earth, and there exists one seed of Electrum wallets per 4.3 Billion Bitcoin addresses.&lt;br /&gt;
(By the way: The number of atoms in the complete universe is estimated as 2^266).&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
Open Point: It is _not clear_ whether the algorithm of deterministic address generation is designed such that for any two seeds &amp;quot;S1&amp;quot; and &amp;quot;S2&amp;quot; (out of the 2^128 possible different seeds) the following condition holds true:&lt;br /&gt;
* If 4.3 Billion (2^32 to be exact) new addresses are calculated from each S1 and from S2, does the algorithm guarantee that there will be no collision between the set of 2^32 addresses from S1 and the set of 2^32 addresses from S2?&lt;br /&gt;
If this condition does not hold true, it needs to be clarified whether the use of deterministic wallets still bares an acceptably low probability of address collisions.&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
===What is the &amp;quot;Gap Limit&amp;quot;?===&lt;br /&gt;
&lt;br /&gt;
The gap limit is the maximal number of contiguous unused addresses in your deterministic sequence of addresses.&lt;br /&gt;
&lt;br /&gt;
If you recover your wallet from seed, you will notice that the gap limit is asked by the recovery dialog.&lt;br /&gt;
It is used in order to decide when to stop the recovery procedure.&lt;br /&gt;
&lt;br /&gt;
If you need to have more receiving addresses in your wallet, you may increase your gap limit (expert mode).&lt;br /&gt;
This, however, means that you will need to remember the new limit in order to be able to recover your wallet from seed.&lt;br /&gt;
&lt;br /&gt;
==More on the Electrum GUI==&lt;br /&gt;
===What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?===&lt;br /&gt;
When sending Bitcoins to a foreign address, Electrum will by default use a built-in method to select the address(es) of the wallet used for sending these Bitcoins.&lt;br /&gt;
&lt;br /&gt;
* When you &#039;&#039;prioritize&#039;&#039; some of your wallet&#039;s addresses, these addresses will be used with preference. Other addresses will not be used until the prioritized addresses contain no more Bitcoins.&lt;br /&gt;
* When you &#039;&#039;freeze&#039;&#039; some of your wallet&#039;s addresses, these addresses will not be used for sending bitcoins. Instead, other addresses will be used. Sending Bitcoins is not possible if the non-frozen addresses of your wallet do not contain enough funds. &lt;br /&gt;
&lt;br /&gt;
The user can (de)prioritize or (un)freeze both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses.&lt;br /&gt;
&lt;br /&gt;
Note: Clearly, an address can not be &amp;quot;prioritized&amp;quot; and &amp;quot;frozen&amp;quot; at the same time.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Tx&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab (own wallet&#039;s addresses) and &amp;quot;Contacts&amp;quot; tab (foreing addresses).&lt;br /&gt;
&lt;br /&gt;
Tx stands for {... ?? &amp;quot;Transaction&amp;quot;? &amp;quot;Transmission&amp;quot; ?? ...}&lt;br /&gt;
&lt;br /&gt;
The Tx column in Electrum displays a number for each Bitcoin address in the address list, both for own addresses (&amp;quot;Receive&amp;quot; tab) and for foreing addresses (&amp;quot;Contacts&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Receive&amp;quot; tab (own addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of _incoming_ Bitcoin transactions that have ever been sent to this address.&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
The number of outgoing transactions is apparently not counted. It is unclear why the column is called &amp;quot;Tx&amp;quot; and not &amp;quot;Rx&amp;quot;, because it indicates the number of times that Bitcoins have been sent to this address, i.e. how often this address has &amp;quot;received&amp;quot; Bitcoins.&lt;br /&gt;
Does this &amp;quot;Tx&amp;quot; come from blockchain/blockexplorer terminology? Or why is it called &amp;quot;Tx&amp;quot; (&amp;quot;transmit&amp;quot;) and not &amp;quot;Rx&amp;quot; (&amp;quot;receive&amp;quot;)? To be clarified.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Contacts&amp;quot; tab (foreign addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of Bitcoin transactions that have ever been carried out from addresses of the current wallet towards this contact address&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Balance&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
The balance column indicates the amount of Bitcoins belonging to the given address.&lt;br /&gt;
The individual balances add up to the total balance of your wallet.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Flag&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
This column indicates certain properties of the different addresses:&lt;br /&gt;
* C = [[#Change Addresses|Change address]] (without a &amp;quot;C&amp;quot; it means it is a [[#Normal Addresses|normal address]])&lt;br /&gt;
* P = Prioritized address&lt;br /&gt;
* F = Frozen address&lt;br /&gt;
* I = [[#Imported Addresses|Imported address]]&lt;br /&gt;
&lt;br /&gt;
Note: P and F flags can be applied to both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses, and also to [[#Imported Addresses|imported addresses]].&lt;br /&gt;
&lt;br /&gt;
===What do colors mean?===&lt;br /&gt;
In the Receive tab:&lt;br /&gt;
*green = prioritized&lt;br /&gt;
*blue = frozen&lt;br /&gt;
In the Contacts tab:&lt;br /&gt;
*gray = alias&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
=== &#039;transaction rejected by memorypool&#039; errors ===&lt;br /&gt;
&lt;br /&gt;
When you send a transaction, there is a delay before the Electrum client displays the transaction in its history.&lt;br /&gt;
This is because the server polls bitcoind&#039;s memorypool every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
If you create another transaction during this interval, during which the first tx is not displayed,&lt;br /&gt;
then your client will pick the same coins again, and the transaction will be rejected as a double spend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://ecdsa.org/electrum Electrum] project website&lt;br /&gt;
* [https://gitorious.org/electrum Electrum] project source (gitorius)&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=50936.msg950497#msg950497 Electrum Forum] - here this documentation was started&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27788</id>
		<title>Electrum/Documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27788"/>
		<updated>2012-06-12T23:04:31Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* How to Read this Documentation */ editorial, headline level changed from level 2 to level 3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation of Electrum Bitcoin Client (Focus on the GUI)==&lt;br /&gt;
This page tries to document certain aspects of the [[Electrum|Electrum]] Bitcoin Client. The focus is on explaining certain aspects of its GUI, such that it gets easier for the user to understand its use.&lt;br /&gt;
&lt;br /&gt;
More documentation, especially with regard to command line parameters, can be found at the parent page of this Wiki, i.e. [[Electrum|here]].&lt;br /&gt;
&lt;br /&gt;
===Version Info===&lt;br /&gt;
Unless stated otherwise in particular sub-sections, the present state of this documentation is based on &#039;&#039;&#039;Electrum version 0.58&#039;&#039;&#039; (as this documentation gets updated, this &amp;quot;version info&amp;quot; can be updated, too).&lt;br /&gt;
&lt;br /&gt;
Later versions of Electrum may add new features or deviate from this description to some extend.&lt;br /&gt;
&lt;br /&gt;
===Open/Unclear Points===&lt;br /&gt;
Text in curly brackets {like this} means that the author(s) of this documentation are not really sure about this...&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; other authors are welcome to correct/clarify&lt;br /&gt;
&lt;br /&gt;
==What is a &amp;quot;Wallet&amp;quot; and a &amp;quot;Bitcoin Address&amp;quot;?==&lt;br /&gt;
* (General, not specific to Electrum)&lt;br /&gt;
&lt;br /&gt;
Your wallet is a list of Bitcoin addresses (more precisely: a list of privat/public key pairs). Each address &amp;quot;contains&amp;quot; (or is associated with) a certain amount of Bitcoins at a given time.&lt;br /&gt;
&lt;br /&gt;
Your wallet&#039;s balance is the sum of all Bitcoins of all your wallet&#039;s Bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
Your wallet consists of both [[#Normal Addresses|normal addresses]] and [[#Change Addresses|change addresses]]. Although they are fully equivalent from the Bitcoin protocol&#039;s point of view, they are different in how they are used by Bitcoin clients like Electrum.&lt;br /&gt;
&lt;br /&gt;
===Normal Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====How are New &amp;quot;Normal Addresses&amp;quot; Created for my Wallet?====&lt;br /&gt;
A Bitcoin client allows you to trigger the generation of a new Bitcoin address either manually, or it generates new addresses automatically upon certain conditions. The latter applies to Electrum: Depending on the &amp;quot;[[#What is the &amp;quot;Gap Limit&amp;quot;?|gap limit]]&amp;quot; setting in Electrum&#039;s program preferences, there will always be a certain number of unused addresses showing up in your list of receive addresses (=your own wallet&#039;s addresses), and as these addresses get used, new ones will show up automatically.&lt;br /&gt;
&lt;br /&gt;
Typically you want to use a new address for receiving Bitcoins from somebody, instead of using any of your wallet&#039;s present addresses that have already been used for earlier transactions. This is to protect your privacy, because all Bitcoins transfers are published in the blockchain and can be read by anyone.&lt;br /&gt;
&lt;br /&gt;
Another way of adding addresses to your wallet is to [[#Imported Addresses|import]] private keys (with their addresses of course), using Electrum&#039;s [[Electrum|command line options]]. See section about [[#Imported Addresses|imported addresses]] for more details.&lt;br /&gt;
&lt;br /&gt;
===Change Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====What is a &amp;quot;Change Address&amp;quot;, and why is it useful?====&lt;br /&gt;
The concept of change addresses is a feature not of the Bitcoin protocol, but of a Bitcoin client. It is implemented not only in Electrum but in most Bitcoin clients, including the original &amp;quot;Satoshi&amp;quot; Bitcoin client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How it works:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Whenever your Bitcoin client (e.g. Electrum) sends Bitcoins from your wallet&#039;s address &amp;quot;A&amp;quot; to a foreing address &amp;quot;B&amp;quot;, a new change address &amp;quot;C&amp;quot; is created by Electrum and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Example: Address &amp;quot;A&amp;quot; has 20 BTC. Electrum sends 9 BTC from &amp;quot;A&amp;quot; to &amp;quot;B&amp;quot;. The change (20-9 = 11 BTC) is sent to the &amp;quot;change address&amp;quot; &amp;quot;C&amp;quot;. For this purpose, address &amp;quot;C&amp;quot; is created by Electrum at this moment and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Exception: If all the Bitcoins of &amp;quot;A&amp;quot; are sent to &amp;quot;B&amp;quot;, there is no need for creating a change address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Actually, Bitcoin clients can also work without change addresses. In this case, the change would be sent back to &amp;quot;A&amp;quot; instead of the new address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why the concept of &amp;quot;change addresses&amp;quot; is useful:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Using a new change address makes it more difficult for other people (by analyzing the blockchain) to track how many Bitcoins you have or where you&#039;re spending them.&lt;br /&gt;
* It also conceals which output is the &amp;quot;spend&amp;quot; and which is the &amp;quot;change&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Imported Addresses===&lt;br /&gt;
Instead of generating new addresses in the default way from the wallet&#039;s [[#Seed|seed]], Electrum also allows you to import addresses (and their private keys of course) from external sources, e.g. from another Bitcoin client&#039;s wallet. For this, use Electrum&#039;s [[Electrum|command line]] options. Note that imported addresses cannot be derived from your wallet&#039;s [[#Seed|seed]] and therefore need to be secured separately for a complete backup of your wallet.&lt;br /&gt;
&lt;br /&gt;
Imported addresses can be used like any other [[#Normal Addresses|normal]] receive address with Electrum for transmission or reception of Bitcoins, and can also be (un)tagged as [[#What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?|&amp;quot;prioritized&amp;quot; or &amp;quot;frozen&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
===Deterministic Wallet===&lt;br /&gt;
====What is a &amp;quot;Deterministic Wallet&amp;quot; in Electrum?====&lt;br /&gt;
Traditionally, all new addresses (incl. the private keys of course) added to the wallet ([[#Normal Addresses|normal addresses]] or [[#Change Addresses|change addresses]]) are generated randomly. This is the case e.g. for the original &amp;quot;Satoshi Bitcoin Client&amp;quot; (at least as of today, version 0.6.2).&lt;br /&gt;
&lt;br /&gt;
Contrary to that, a Bitcoin client with a &amp;quot;Deterministic Wallet&amp;quot; will generate all new addresses accoding to a pre-defined (i.e. &amp;quot;deterministic&amp;quot;) algorithm as a function of a wallet-specific [[#Seed|seed]], which is a 128 bit number. This means, if the seed is known, all new addresses that Electrum will ever create for this wallet are known, because Electrum&#039;s algorithm is known (and open source).&lt;br /&gt;
This is a big advantage when it comes to making wallet backups:&lt;br /&gt;
* &#039;&#039;Traditionally&#039;&#039;, a wallet backup just contains the bitcoin addresses (and private keys of course) that have been created by the client by the time the backup was made. If the user performs transactions after the backup, new addresses ([[#Normal Addresses|normal]] or [[#Change Addresses|change]] addresses) will be generated and added to the wallet. These are not included in the backup yet. If the wallet in use gets lost, all the Bitcoins that are associated with the new addresses will also be lost. To avoid the risk of a too high loss, regular wallet backups are important.&lt;br /&gt;
* &#039;&#039;With a Deterministic Wallet&#039;&#039; (like with Electrum), the wallet backup only needs to contain the seed, and all new addresses generated in the future are already secured by the initial backup. Hence, regular new backups are not required!&lt;br /&gt;
&lt;br /&gt;
===Seed===&lt;br /&gt;
====What is the &amp;quot;Seed&amp;quot; of a Deterministic Wallet in Electrum?====&lt;br /&gt;
The Seed of a [[#Deterministic Wallet|deterministic wallet]] is a series of 128 random bits in Electrum.&lt;br /&gt;
For convenience, a seed can also be expressed by a sequence of 12 words in Electrum, and it also supports generation of a QR code to facilitate the backup of the seed.&lt;br /&gt;
&lt;br /&gt;
So there are 2^128 possible seeds for a deterministic wallet in Electrum.&lt;br /&gt;
For comparison, the total number of Bitcoin addresses is 2^160, and the number of atoms on earth is 2^166.&lt;br /&gt;
So there exists one Bitcoin address per 1 Million atoms on earth, and there exists one seed of Electrum wallets per 4.3 Billion Bitcoin addresses.&lt;br /&gt;
(By the way: The number of atoms in the complete universe is estimated as 2^266).&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
Open Point: It is _not clear_ whether the algorithm of deterministic address generation is designed such that for any two seeds &amp;quot;S1&amp;quot; and &amp;quot;S2&amp;quot; (out of the 2^128 possible different seeds) the following condition holds true:&lt;br /&gt;
* If 4.3 Billion (2^32 to be exact) new addresses are calculated from each S1 and from S2, does the algorithm guarantee that there will be no collision between the set of 2^32 addresses from S1 and the set of 2^32 addresses from S2?&lt;br /&gt;
If this condition does not hold true, it needs to be clarified whether the use of deterministic wallets still bares an acceptably low probability of address collisions.&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
===What is the &amp;quot;Gap Limit&amp;quot;?===&lt;br /&gt;
&lt;br /&gt;
The gap limit is the maximal number of contiguous unused addresses in your deterministic sequence of addresses.&lt;br /&gt;
&lt;br /&gt;
If you recover your wallet from seed, you will notice that the gap limit is asked by the recovery dialog.&lt;br /&gt;
It is used in order to decide when to stop the recovery procedure.&lt;br /&gt;
&lt;br /&gt;
If you need to have more receiving addresses in your wallet, you may increase your gap limit (expert mode).&lt;br /&gt;
This, however, means that you will need to remember the new limit in order to be able to recover your wallet from seed.&lt;br /&gt;
&lt;br /&gt;
==More on the Electrum GUI==&lt;br /&gt;
===What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?===&lt;br /&gt;
When sending Bitcoins to a foreign address, Electrum will by default use a built-in method to select the address(es) of the wallet used for sending these Bitcoins.&lt;br /&gt;
&lt;br /&gt;
* When you &#039;&#039;prioritize&#039;&#039; some of your wallet&#039;s addresses, these addresses will be used with preference. Other addresses will not be used until the prioritized addresses contain no more Bitcoins.&lt;br /&gt;
* When you &#039;&#039;freeze&#039;&#039; some of your wallet&#039;s addresses, these addresses will not be used for sending bitcoins. Instead, other addresses will be used. Sending Bitcoins is not possible if the non-frozen addresses of your wallet do not contain enough funds. &lt;br /&gt;
&lt;br /&gt;
The user can (de)prioritize or (un)freeze both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses.&lt;br /&gt;
&lt;br /&gt;
Note: Clearly, an address can not be &amp;quot;prioritized&amp;quot; and &amp;quot;frozen&amp;quot; at the same time.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Tx&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab (own wallet&#039;s addresses) and &amp;quot;Contacts&amp;quot; tab (foreing addresses).&lt;br /&gt;
&lt;br /&gt;
Tx stands for {... ?? &amp;quot;Transaction&amp;quot;? &amp;quot;Transmission&amp;quot; ?? ...}&lt;br /&gt;
&lt;br /&gt;
The Tx column in Electrum displays a number for each Bitcoin address in the address list, both for own addresses (&amp;quot;Receive&amp;quot; tab) and for foreing addresses (&amp;quot;Contacts&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Receive&amp;quot; tab (own addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of _incoming_ Bitcoin transactions that have ever been sent to this address.&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
The number of outgoing transactions is apparently not counted. It is unclear why the column is called &amp;quot;Tx&amp;quot; and not &amp;quot;Rx&amp;quot;, because it indicates the number of times that Bitcoins have been sent to this address, i.e. how often this address has &amp;quot;received&amp;quot; Bitcoins.&lt;br /&gt;
Does this &amp;quot;Tx&amp;quot; come from blockchain/blockexplorer terminology? Or why is it called &amp;quot;Tx&amp;quot; (&amp;quot;transmit&amp;quot;) and not &amp;quot;Rx&amp;quot; (&amp;quot;receive&amp;quot;)? To be clarified.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Contacts&amp;quot; tab (foreign addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of Bitcoin transactions that have ever been carried out from addresses of the current wallet towards this contact address&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Balance&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
The balance column indicates the amount of Bitcoins belonging to the given address.&lt;br /&gt;
The individual balances add up to the total balance of your wallet.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Flag&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
This column indicates certain properties of the different addresses:&lt;br /&gt;
* C = [[#Change Addresses|Change address]] (without a &amp;quot;C&amp;quot; it means it is a [[#Normal Addresses|normal address]])&lt;br /&gt;
* P = Prioritized address&lt;br /&gt;
* F = Frozen address&lt;br /&gt;
* I = [[#Imported Addresses|Imported address]]&lt;br /&gt;
&lt;br /&gt;
Note: P and F flags can be applied to both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses, and also to [[#Imported Addresses|imported addresses]].&lt;br /&gt;
&lt;br /&gt;
===What do colors mean?===&lt;br /&gt;
In the Receive tab:&lt;br /&gt;
*green = prioritized&lt;br /&gt;
*blue = frozen&lt;br /&gt;
In the Contacts tab:&lt;br /&gt;
*gray = alias&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
=== &#039;transaction rejected by memorypool&#039; errors ===&lt;br /&gt;
&lt;br /&gt;
When you send a transaction, there is a delay before the Electrum client displays the transaction in its history.&lt;br /&gt;
This is because the server polls bitcoind&#039;s memorypool every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
If you create another transaction during this interval, during which the first tx is not displayed,&lt;br /&gt;
then your client will pick the same coins again, and the transaction will be rejected as a double spend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://ecdsa.org/electrum Electrum] project website&lt;br /&gt;
* [https://gitorious.org/electrum Electrum] project source (gitorius)&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=50936.msg950497#msg950497 Electrum Forum] - here this documentation was started&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27785</id>
		<title>Electrum/Documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27785"/>
		<updated>2012-06-12T23:02:33Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* Documentation of Electrum Bitcoin Client (Focus on the GUI) */ added version info (v0.58)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation of Electrum Bitcoin Client (Focus on the GUI)==&lt;br /&gt;
This page tries to document certain aspects of the [[Electrum|Electrum]] Bitcoin Client. The focus is on explaining certain aspects of its GUI, such that it gets easier for the user to understand its use.&lt;br /&gt;
&lt;br /&gt;
More documentation, especially with regard to command line parameters, can be found at the parent page of this Wiki, i.e. [[Electrum|here]].&lt;br /&gt;
&lt;br /&gt;
===Version Info===&lt;br /&gt;
Unless stated otherwise in particular sub-sections, the present state of this documentation is based on &#039;&#039;&#039;Electrum version 0.58&#039;&#039;&#039; (as this documentation gets updated, this &amp;quot;version info&amp;quot; can be updated, too).&lt;br /&gt;
&lt;br /&gt;
Later versions of Electrum may add new features or deviate from this description to some extend.&lt;br /&gt;
&lt;br /&gt;
==How to Read this Documentation==&lt;br /&gt;
* Text in curly brackets {like this} means that the author(s) of this documentation are not really sure about this... --&amp;gt; other people are welcome to correct/clarify&lt;br /&gt;
&lt;br /&gt;
==What is a &amp;quot;Wallet&amp;quot; and a &amp;quot;Bitcoin Address&amp;quot;?==&lt;br /&gt;
* (General, not specific to Electrum)&lt;br /&gt;
&lt;br /&gt;
Your wallet is a list of Bitcoin addresses (more precisely: a list of privat/public key pairs). Each address &amp;quot;contains&amp;quot; (or is associated with) a certain amount of Bitcoins at a given time.&lt;br /&gt;
&lt;br /&gt;
Your wallet&#039;s balance is the sum of all Bitcoins of all your wallet&#039;s Bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
Your wallet consists of both [[#Normal Addresses|normal addresses]] and [[#Change Addresses|change addresses]]. Although they are fully equivalent from the Bitcoin protocol&#039;s point of view, they are different in how they are used by Bitcoin clients like Electrum.&lt;br /&gt;
&lt;br /&gt;
===Normal Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====How are New &amp;quot;Normal Addresses&amp;quot; Created for my Wallet?====&lt;br /&gt;
A Bitcoin client allows you to trigger the generation of a new Bitcoin address either manually, or it generates new addresses automatically upon certain conditions. The latter applies to Electrum: Depending on the &amp;quot;[[#What is the &amp;quot;Gap Limit&amp;quot;?|gap limit]]&amp;quot; setting in Electrum&#039;s program preferences, there will always be a certain number of unused addresses showing up in your list of receive addresses (=your own wallet&#039;s addresses), and as these addresses get used, new ones will show up automatically.&lt;br /&gt;
&lt;br /&gt;
Typically you want to use a new address for receiving Bitcoins from somebody, instead of using any of your wallet&#039;s present addresses that have already been used for earlier transactions. This is to protect your privacy, because all Bitcoins transfers are published in the blockchain and can be read by anyone.&lt;br /&gt;
&lt;br /&gt;
Another way of adding addresses to your wallet is to [[#Imported Addresses|import]] private keys (with their addresses of course), using Electrum&#039;s [[Electrum|command line options]]. See section about [[#Imported Addresses|imported addresses]] for more details.&lt;br /&gt;
&lt;br /&gt;
===Change Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====What is a &amp;quot;Change Address&amp;quot;, and why is it useful?====&lt;br /&gt;
The concept of change addresses is a feature not of the Bitcoin protocol, but of a Bitcoin client. It is implemented not only in Electrum but in most Bitcoin clients, including the original &amp;quot;Satoshi&amp;quot; Bitcoin client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How it works:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Whenever your Bitcoin client (e.g. Electrum) sends Bitcoins from your wallet&#039;s address &amp;quot;A&amp;quot; to a foreing address &amp;quot;B&amp;quot;, a new change address &amp;quot;C&amp;quot; is created by Electrum and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Example: Address &amp;quot;A&amp;quot; has 20 BTC. Electrum sends 9 BTC from &amp;quot;A&amp;quot; to &amp;quot;B&amp;quot;. The change (20-9 = 11 BTC) is sent to the &amp;quot;change address&amp;quot; &amp;quot;C&amp;quot;. For this purpose, address &amp;quot;C&amp;quot; is created by Electrum at this moment and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Exception: If all the Bitcoins of &amp;quot;A&amp;quot; are sent to &amp;quot;B&amp;quot;, there is no need for creating a change address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Actually, Bitcoin clients can also work without change addresses. In this case, the change would be sent back to &amp;quot;A&amp;quot; instead of the new address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why the concept of &amp;quot;change addresses&amp;quot; is useful:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Using a new change address makes it more difficult for other people (by analyzing the blockchain) to track how many Bitcoins you have or where you&#039;re spending them.&lt;br /&gt;
* It also conceals which output is the &amp;quot;spend&amp;quot; and which is the &amp;quot;change&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Imported Addresses===&lt;br /&gt;
Instead of generating new addresses in the default way from the wallet&#039;s [[#Seed|seed]], Electrum also allows you to import addresses (and their private keys of course) from external sources, e.g. from another Bitcoin client&#039;s wallet. For this, use Electrum&#039;s [[Electrum|command line]] options. Note that imported addresses cannot be derived from your wallet&#039;s [[#Seed|seed]] and therefore need to be secured separately for a complete backup of your wallet.&lt;br /&gt;
&lt;br /&gt;
Imported addresses can be used like any other [[#Normal Addresses|normal]] receive address with Electrum for transmission or reception of Bitcoins, and can also be (un)tagged as [[#What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?|&amp;quot;prioritized&amp;quot; or &amp;quot;frozen&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
===Deterministic Wallet===&lt;br /&gt;
====What is a &amp;quot;Deterministic Wallet&amp;quot; in Electrum?====&lt;br /&gt;
Traditionally, all new addresses (incl. the private keys of course) added to the wallet ([[#Normal Addresses|normal addresses]] or [[#Change Addresses|change addresses]]) are generated randomly. This is the case e.g. for the original &amp;quot;Satoshi Bitcoin Client&amp;quot; (at least as of today, version 0.6.2).&lt;br /&gt;
&lt;br /&gt;
Contrary to that, a Bitcoin client with a &amp;quot;Deterministic Wallet&amp;quot; will generate all new addresses accoding to a pre-defined (i.e. &amp;quot;deterministic&amp;quot;) algorithm as a function of a wallet-specific [[#Seed|seed]], which is a 128 bit number. This means, if the seed is known, all new addresses that Electrum will ever create for this wallet are known, because Electrum&#039;s algorithm is known (and open source).&lt;br /&gt;
This is a big advantage when it comes to making wallet backups:&lt;br /&gt;
* &#039;&#039;Traditionally&#039;&#039;, a wallet backup just contains the bitcoin addresses (and private keys of course) that have been created by the client by the time the backup was made. If the user performs transactions after the backup, new addresses ([[#Normal Addresses|normal]] or [[#Change Addresses|change]] addresses) will be generated and added to the wallet. These are not included in the backup yet. If the wallet in use gets lost, all the Bitcoins that are associated with the new addresses will also be lost. To avoid the risk of a too high loss, regular wallet backups are important.&lt;br /&gt;
* &#039;&#039;With a Deterministic Wallet&#039;&#039; (like with Electrum), the wallet backup only needs to contain the seed, and all new addresses generated in the future are already secured by the initial backup. Hence, regular new backups are not required!&lt;br /&gt;
&lt;br /&gt;
===Seed===&lt;br /&gt;
====What is the &amp;quot;Seed&amp;quot; of a Deterministic Wallet in Electrum?====&lt;br /&gt;
The Seed of a [[#Deterministic Wallet|deterministic wallet]] is a series of 128 random bits in Electrum.&lt;br /&gt;
For convenience, a seed can also be expressed by a sequence of 12 words in Electrum, and it also supports generation of a QR code to facilitate the backup of the seed.&lt;br /&gt;
&lt;br /&gt;
So there are 2^128 possible seeds for a deterministic wallet in Electrum.&lt;br /&gt;
For comparison, the total number of Bitcoin addresses is 2^160, and the number of atoms on earth is 2^166.&lt;br /&gt;
So there exists one Bitcoin address per 1 Million atoms on earth, and there exists one seed of Electrum wallets per 4.3 Billion Bitcoin addresses.&lt;br /&gt;
(By the way: The number of atoms in the complete universe is estimated as 2^266).&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
Open Point: It is _not clear_ whether the algorithm of deterministic address generation is designed such that for any two seeds &amp;quot;S1&amp;quot; and &amp;quot;S2&amp;quot; (out of the 2^128 possible different seeds) the following condition holds true:&lt;br /&gt;
* If 4.3 Billion (2^32 to be exact) new addresses are calculated from each S1 and from S2, does the algorithm guarantee that there will be no collision between the set of 2^32 addresses from S1 and the set of 2^32 addresses from S2?&lt;br /&gt;
If this condition does not hold true, it needs to be clarified whether the use of deterministic wallets still bares an acceptably low probability of address collisions.&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
===What is the &amp;quot;Gap Limit&amp;quot;?===&lt;br /&gt;
&lt;br /&gt;
The gap limit is the maximal number of contiguous unused addresses in your deterministic sequence of addresses.&lt;br /&gt;
&lt;br /&gt;
If you recover your wallet from seed, you will notice that the gap limit is asked by the recovery dialog.&lt;br /&gt;
It is used in order to decide when to stop the recovery procedure.&lt;br /&gt;
&lt;br /&gt;
If you need to have more receiving addresses in your wallet, you may increase your gap limit (expert mode).&lt;br /&gt;
This, however, means that you will need to remember the new limit in order to be able to recover your wallet from seed.&lt;br /&gt;
&lt;br /&gt;
==More on the Electrum GUI==&lt;br /&gt;
===What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?===&lt;br /&gt;
When sending Bitcoins to a foreign address, Electrum will by default use a built-in method to select the address(es) of the wallet used for sending these Bitcoins.&lt;br /&gt;
&lt;br /&gt;
* When you &#039;&#039;prioritize&#039;&#039; some of your wallet&#039;s addresses, these addresses will be used with preference. Other addresses will not be used until the prioritized addresses contain no more Bitcoins.&lt;br /&gt;
* When you &#039;&#039;freeze&#039;&#039; some of your wallet&#039;s addresses, these addresses will not be used for sending bitcoins. Instead, other addresses will be used. Sending Bitcoins is not possible if the non-frozen addresses of your wallet do not contain enough funds. &lt;br /&gt;
&lt;br /&gt;
The user can (de)prioritize or (un)freeze both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses.&lt;br /&gt;
&lt;br /&gt;
Note: Clearly, an address can not be &amp;quot;prioritized&amp;quot; and &amp;quot;frozen&amp;quot; at the same time.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Tx&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab (own wallet&#039;s addresses) and &amp;quot;Contacts&amp;quot; tab (foreing addresses).&lt;br /&gt;
&lt;br /&gt;
Tx stands for {... ?? &amp;quot;Transaction&amp;quot;? &amp;quot;Transmission&amp;quot; ?? ...}&lt;br /&gt;
&lt;br /&gt;
The Tx column in Electrum displays a number for each Bitcoin address in the address list, both for own addresses (&amp;quot;Receive&amp;quot; tab) and for foreing addresses (&amp;quot;Contacts&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Receive&amp;quot; tab (own addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of _incoming_ Bitcoin transactions that have ever been sent to this address.&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
The number of outgoing transactions is apparently not counted. It is unclear why the column is called &amp;quot;Tx&amp;quot; and not &amp;quot;Rx&amp;quot;, because it indicates the number of times that Bitcoins have been sent to this address, i.e. how often this address has &amp;quot;received&amp;quot; Bitcoins.&lt;br /&gt;
Does this &amp;quot;Tx&amp;quot; come from blockchain/blockexplorer terminology? Or why is it called &amp;quot;Tx&amp;quot; (&amp;quot;transmit&amp;quot;) and not &amp;quot;Rx&amp;quot; (&amp;quot;receive&amp;quot;)? To be clarified.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Contacts&amp;quot; tab (foreign addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of Bitcoin transactions that have ever been carried out from addresses of the current wallet towards this contact address&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Balance&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
The balance column indicates the amount of Bitcoins belonging to the given address.&lt;br /&gt;
The individual balances add up to the total balance of your wallet.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Flag&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
This column indicates certain properties of the different addresses:&lt;br /&gt;
* C = [[#Change Addresses|Change address]] (without a &amp;quot;C&amp;quot; it means it is a [[#Normal Addresses|normal address]])&lt;br /&gt;
* P = Prioritized address&lt;br /&gt;
* F = Frozen address&lt;br /&gt;
* I = [[#Imported Addresses|Imported address]]&lt;br /&gt;
&lt;br /&gt;
Note: P and F flags can be applied to both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses, and also to [[#Imported Addresses|imported addresses]].&lt;br /&gt;
&lt;br /&gt;
===What do colors mean?===&lt;br /&gt;
In the Receive tab:&lt;br /&gt;
*green = prioritized&lt;br /&gt;
*blue = frozen&lt;br /&gt;
In the Contacts tab:&lt;br /&gt;
*gray = alias&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
=== &#039;transaction rejected by memorypool&#039; errors ===&lt;br /&gt;
&lt;br /&gt;
When you send a transaction, there is a delay before the Electrum client displays the transaction in its history.&lt;br /&gt;
This is because the server polls bitcoind&#039;s memorypool every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
If you create another transaction during this interval, during which the first tx is not displayed,&lt;br /&gt;
then your client will pick the same coins again, and the transaction will be rejected as a double spend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://ecdsa.org/electrum Electrum] project website&lt;br /&gt;
* [https://gitorious.org/electrum Electrum] project source (gitorius)&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=50936.msg950497#msg950497 Electrum Forum] - here this documentation was started&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27780</id>
		<title>Electrum/Documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27780"/>
		<updated>2012-06-12T22:49:06Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* How are New &amp;quot;Normal Addresses&amp;quot; Created for my Wallet? */ corrected description of how the GUI creates new addresses (v0.58)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation of Electrum Bitcoin Client (Focus on the GUI)==&lt;br /&gt;
This page tries to document certain aspects of the [[Electrum|Electrum]] Bitcoin Client. The focus is on explaining certain aspects of its GUI, such that it gets easier for the user to understand its use.&lt;br /&gt;
&lt;br /&gt;
More documentation, especially with regard to command line parameters, can be found at the parent page of this Wiki, i.e. [[Electrum|here]].&lt;br /&gt;
&lt;br /&gt;
==How to Read this Documentation==&lt;br /&gt;
* Text in curly brackets {like this} means that the author(s) of this documentation are not really sure about this... --&amp;gt; other people are welcome to correct/clarify&lt;br /&gt;
&lt;br /&gt;
==What is a &amp;quot;Wallet&amp;quot; and a &amp;quot;Bitcoin Address&amp;quot;?==&lt;br /&gt;
* (General, not specific to Electrum)&lt;br /&gt;
&lt;br /&gt;
Your wallet is a list of Bitcoin addresses (more precisely: a list of privat/public key pairs). Each address &amp;quot;contains&amp;quot; (or is associated with) a certain amount of Bitcoins at a given time.&lt;br /&gt;
&lt;br /&gt;
Your wallet&#039;s balance is the sum of all Bitcoins of all your wallet&#039;s Bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
Your wallet consists of both [[#Normal Addresses|normal addresses]] and [[#Change Addresses|change addresses]]. Although they are fully equivalent from the Bitcoin protocol&#039;s point of view, they are different in how they are used by Bitcoin clients like Electrum.&lt;br /&gt;
&lt;br /&gt;
===Normal Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====How are New &amp;quot;Normal Addresses&amp;quot; Created for my Wallet?====&lt;br /&gt;
A Bitcoin client allows you to trigger the generation of a new Bitcoin address either manually, or it generates new addresses automatically upon certain conditions. The latter applies to Electrum: Depending on the &amp;quot;[[#What is the &amp;quot;Gap Limit&amp;quot;?|gap limit]]&amp;quot; setting in Electrum&#039;s program preferences, there will always be a certain number of unused addresses showing up in your list of receive addresses (=your own wallet&#039;s addresses), and as these addresses get used, new ones will show up automatically.&lt;br /&gt;
&lt;br /&gt;
Typically you want to use a new address for receiving Bitcoins from somebody, instead of using any of your wallet&#039;s present addresses that have already been used for earlier transactions. This is to protect your privacy, because all Bitcoins transfers are published in the blockchain and can be read by anyone.&lt;br /&gt;
&lt;br /&gt;
Another way of adding addresses to your wallet is to [[#Imported Addresses|import]] private keys (with their addresses of course), using Electrum&#039;s [[Electrum|command line options]]. See section about [[#Imported Addresses|imported addresses]] for more details.&lt;br /&gt;
&lt;br /&gt;
===Change Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====What is a &amp;quot;Change Address&amp;quot;, and why is it useful?====&lt;br /&gt;
The concept of change addresses is a feature not of the Bitcoin protocol, but of a Bitcoin client. It is implemented not only in Electrum but in most Bitcoin clients, including the original &amp;quot;Satoshi&amp;quot; Bitcoin client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How it works:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Whenever your Bitcoin client (e.g. Electrum) sends Bitcoins from your wallet&#039;s address &amp;quot;A&amp;quot; to a foreing address &amp;quot;B&amp;quot;, a new change address &amp;quot;C&amp;quot; is created by Electrum and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Example: Address &amp;quot;A&amp;quot; has 20 BTC. Electrum sends 9 BTC from &amp;quot;A&amp;quot; to &amp;quot;B&amp;quot;. The change (20-9 = 11 BTC) is sent to the &amp;quot;change address&amp;quot; &amp;quot;C&amp;quot;. For this purpose, address &amp;quot;C&amp;quot; is created by Electrum at this moment and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Exception: If all the Bitcoins of &amp;quot;A&amp;quot; are sent to &amp;quot;B&amp;quot;, there is no need for creating a change address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Actually, Bitcoin clients can also work without change addresses. In this case, the change would be sent back to &amp;quot;A&amp;quot; instead of the new address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why the concept of &amp;quot;change addresses&amp;quot; is useful:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Using a new change address makes it more difficult for other people (by analyzing the blockchain) to track how many Bitcoins you have or where you&#039;re spending them.&lt;br /&gt;
* It also conceals which output is the &amp;quot;spend&amp;quot; and which is the &amp;quot;change&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Imported Addresses===&lt;br /&gt;
Instead of generating new addresses in the default way from the wallet&#039;s [[#Seed|seed]], Electrum also allows you to import addresses (and their private keys of course) from external sources, e.g. from another Bitcoin client&#039;s wallet. For this, use Electrum&#039;s [[Electrum|command line]] options. Note that imported addresses cannot be derived from your wallet&#039;s [[#Seed|seed]] and therefore need to be secured separately for a complete backup of your wallet.&lt;br /&gt;
&lt;br /&gt;
Imported addresses can be used like any other [[#Normal Addresses|normal]] receive address with Electrum for transmission or reception of Bitcoins, and can also be (un)tagged as [[#What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?|&amp;quot;prioritized&amp;quot; or &amp;quot;frozen&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
===Deterministic Wallet===&lt;br /&gt;
====What is a &amp;quot;Deterministic Wallet&amp;quot; in Electrum?====&lt;br /&gt;
Traditionally, all new addresses (incl. the private keys of course) added to the wallet ([[#Normal Addresses|normal addresses]] or [[#Change Addresses|change addresses]]) are generated randomly. This is the case e.g. for the original &amp;quot;Satoshi Bitcoin Client&amp;quot; (at least as of today, version 0.6.2).&lt;br /&gt;
&lt;br /&gt;
Contrary to that, a Bitcoin client with a &amp;quot;Deterministic Wallet&amp;quot; will generate all new addresses accoding to a pre-defined (i.e. &amp;quot;deterministic&amp;quot;) algorithm as a function of a wallet-specific [[#Seed|seed]], which is a 128 bit number. This means, if the seed is known, all new addresses that Electrum will ever create for this wallet are known, because Electrum&#039;s algorithm is known (and open source).&lt;br /&gt;
This is a big advantage when it comes to making wallet backups:&lt;br /&gt;
* &#039;&#039;Traditionally&#039;&#039;, a wallet backup just contains the bitcoin addresses (and private keys of course) that have been created by the client by the time the backup was made. If the user performs transactions after the backup, new addresses ([[#Normal Addresses|normal]] or [[#Change Addresses|change]] addresses) will be generated and added to the wallet. These are not included in the backup yet. If the wallet in use gets lost, all the Bitcoins that are associated with the new addresses will also be lost. To avoid the risk of a too high loss, regular wallet backups are important.&lt;br /&gt;
* &#039;&#039;With a Deterministic Wallet&#039;&#039; (like with Electrum), the wallet backup only needs to contain the seed, and all new addresses generated in the future are already secured by the initial backup. Hence, regular new backups are not required!&lt;br /&gt;
&lt;br /&gt;
===Seed===&lt;br /&gt;
====What is the &amp;quot;Seed&amp;quot; of a Deterministic Wallet in Electrum?====&lt;br /&gt;
The Seed of a [[#Deterministic Wallet|deterministic wallet]] is a series of 128 random bits in Electrum.&lt;br /&gt;
For convenience, a seed can also be expressed by a sequence of 12 words in Electrum, and it also supports generation of a QR code to facilitate the backup of the seed.&lt;br /&gt;
&lt;br /&gt;
So there are 2^128 possible seeds for a deterministic wallet in Electrum.&lt;br /&gt;
For comparison, the total number of Bitcoin addresses is 2^160, and the number of atoms on earth is 2^166.&lt;br /&gt;
So there exists one Bitcoin address per 1 Million atoms on earth, and there exists one seed of Electrum wallets per 4.3 Billion Bitcoin addresses.&lt;br /&gt;
(By the way: The number of atoms in the complete universe is estimated as 2^266).&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
Open Point: It is _not clear_ whether the algorithm of deterministic address generation is designed such that for any two seeds &amp;quot;S1&amp;quot; and &amp;quot;S2&amp;quot; (out of the 2^128 possible different seeds) the following condition holds true:&lt;br /&gt;
* If 4.3 Billion (2^32 to be exact) new addresses are calculated from each S1 and from S2, does the algorithm guarantee that there will be no collision between the set of 2^32 addresses from S1 and the set of 2^32 addresses from S2?&lt;br /&gt;
If this condition does not hold true, it needs to be clarified whether the use of deterministic wallets still bares an acceptably low probability of address collisions.&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
===What is the &amp;quot;Gap Limit&amp;quot;?===&lt;br /&gt;
&lt;br /&gt;
The gap limit is the maximal number of contiguous unused addresses in your deterministic sequence of addresses.&lt;br /&gt;
&lt;br /&gt;
If you recover your wallet from seed, you will notice that the gap limit is asked by the recovery dialog.&lt;br /&gt;
It is used in order to decide when to stop the recovery procedure.&lt;br /&gt;
&lt;br /&gt;
If you need to have more receiving addresses in your wallet, you may increase your gap limit (expert mode).&lt;br /&gt;
This, however, means that you will need to remember the new limit in order to be able to recover your wallet from seed.&lt;br /&gt;
&lt;br /&gt;
==More on the Electrum GUI==&lt;br /&gt;
===What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?===&lt;br /&gt;
When sending Bitcoins to a foreign address, Electrum will by default use a built-in method to select the address(es) of the wallet used for sending these Bitcoins.&lt;br /&gt;
&lt;br /&gt;
* When you &#039;&#039;prioritize&#039;&#039; some of your wallet&#039;s addresses, these addresses will be used with preference. Other addresses will not be used until the prioritized addresses contain no more Bitcoins.&lt;br /&gt;
* When you &#039;&#039;freeze&#039;&#039; some of your wallet&#039;s addresses, these addresses will not be used for sending bitcoins. Instead, other addresses will be used. Sending Bitcoins is not possible if the non-frozen addresses of your wallet do not contain enough funds. &lt;br /&gt;
&lt;br /&gt;
The user can (de)prioritize or (un)freeze both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses.&lt;br /&gt;
&lt;br /&gt;
Note: Clearly, an address can not be &amp;quot;prioritized&amp;quot; and &amp;quot;frozen&amp;quot; at the same time.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Tx&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab (own wallet&#039;s addresses) and &amp;quot;Contacts&amp;quot; tab (foreing addresses).&lt;br /&gt;
&lt;br /&gt;
Tx stands for {... ?? &amp;quot;Transaction&amp;quot;? &amp;quot;Transmission&amp;quot; ?? ...}&lt;br /&gt;
&lt;br /&gt;
The Tx column in Electrum displays a number for each Bitcoin address in the address list, both for own addresses (&amp;quot;Receive&amp;quot; tab) and for foreing addresses (&amp;quot;Contacts&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Receive&amp;quot; tab (own addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of _incoming_ Bitcoin transactions that have ever been sent to this address.&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
The number of outgoing transactions is apparently not counted. It is unclear why the column is called &amp;quot;Tx&amp;quot; and not &amp;quot;Rx&amp;quot;, because it indicates the number of times that Bitcoins have been sent to this address, i.e. how often this address has &amp;quot;received&amp;quot; Bitcoins.&lt;br /&gt;
Does this &amp;quot;Tx&amp;quot; come from blockchain/blockexplorer terminology? Or why is it called &amp;quot;Tx&amp;quot; (&amp;quot;transmit&amp;quot;) and not &amp;quot;Rx&amp;quot; (&amp;quot;receive&amp;quot;)? To be clarified.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Contacts&amp;quot; tab (foreign addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of Bitcoin transactions that have ever been carried out from addresses of the current wallet towards this contact address&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Balance&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
The balance column indicates the amount of Bitcoins belonging to the given address.&lt;br /&gt;
The individual balances add up to the total balance of your wallet.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Flag&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
This column indicates certain properties of the different addresses:&lt;br /&gt;
* C = [[#Change Addresses|Change address]] (without a &amp;quot;C&amp;quot; it means it is a [[#Normal Addresses|normal address]])&lt;br /&gt;
* P = Prioritized address&lt;br /&gt;
* F = Frozen address&lt;br /&gt;
* I = [[#Imported Addresses|Imported address]]&lt;br /&gt;
&lt;br /&gt;
Note: P and F flags can be applied to both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses, and also to [[#Imported Addresses|imported addresses]].&lt;br /&gt;
&lt;br /&gt;
===What do colors mean?===&lt;br /&gt;
In the Receive tab:&lt;br /&gt;
*green = prioritized&lt;br /&gt;
*blue = frozen&lt;br /&gt;
In the Contacts tab:&lt;br /&gt;
*gray = alias&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
=== &#039;transaction rejected by memorypool&#039; errors ===&lt;br /&gt;
&lt;br /&gt;
When you send a transaction, there is a delay before the Electrum client displays the transaction in its history.&lt;br /&gt;
This is because the server polls bitcoind&#039;s memorypool every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
If you create another transaction during this interval, during which the first tx is not displayed,&lt;br /&gt;
then your client will pick the same coins again, and the transaction will be rejected as a double spend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://ecdsa.org/electrum Electrum] project website&lt;br /&gt;
* [https://gitorious.org/electrum Electrum] project source (gitorius)&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=50936.msg950497#msg950497 Electrum Forum] - here this documentation was started&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27778</id>
		<title>Electrum/Documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27778"/>
		<updated>2012-06-12T22:35:09Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* What does the &amp;quot;Flag&amp;quot; column mean in Electrum? */ added &amp;quot;Expert Mode only&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation of Electrum Bitcoin Client (Focus on the GUI)==&lt;br /&gt;
This page tries to document certain aspects of the [[Electrum|Electrum]] Bitcoin Client. The focus is on explaining certain aspects of its GUI, such that it gets easier for the user to understand its use.&lt;br /&gt;
&lt;br /&gt;
More documentation, especially with regard to command line parameters, can be found at the parent page of this Wiki, i.e. [[Electrum|here]].&lt;br /&gt;
&lt;br /&gt;
==How to Read this Documentation==&lt;br /&gt;
* Text in curly brackets {like this} means that the author(s) of this documentation are not really sure about this... --&amp;gt; other people are welcome to correct/clarify&lt;br /&gt;
&lt;br /&gt;
==What is a &amp;quot;Wallet&amp;quot; and a &amp;quot;Bitcoin Address&amp;quot;?==&lt;br /&gt;
* (General, not specific to Electrum)&lt;br /&gt;
&lt;br /&gt;
Your wallet is a list of Bitcoin addresses (more precisely: a list of privat/public key pairs). Each address &amp;quot;contains&amp;quot; (or is associated with) a certain amount of Bitcoins at a given time.&lt;br /&gt;
&lt;br /&gt;
Your wallet&#039;s balance is the sum of all Bitcoins of all your wallet&#039;s Bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
Your wallet consists of both [[#Normal Addresses|normal addresses]] and [[#Change Addresses|change addresses]]. Although they are fully equivalent from the Bitcoin protocol&#039;s point of view, they are different in how they are used by Bitcoin clients like Electrum.&lt;br /&gt;
&lt;br /&gt;
===Normal Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====How are New &amp;quot;Normal Addresses&amp;quot; Created for my Wallet?====&lt;br /&gt;
The Bitcoin client (e.g. Electrum) allows you to trigger manually the generation of a new Bitcoin address. You typically want to create a new address when you want to receive Bitcoins from somebody and do not want to use any of the wallet&#039;s present addresses that have already been used for earlier Bitcoin transfers, for privacy reasons (note that all transfers are publically visible in the blockchain).&lt;br /&gt;
&lt;br /&gt;
Another way of adding addresses to your wallet is to [[#Imported Addresses|import]] private keys (with their addresses of course), using Electrum&#039;s [[Electrum|command line options]]. See section about [[#Imported Addresses|imported addresses]] for more details.&lt;br /&gt;
&lt;br /&gt;
===Change Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====What is a &amp;quot;Change Address&amp;quot;, and why is it useful?====&lt;br /&gt;
The concept of change addresses is a feature not of the Bitcoin protocol, but of a Bitcoin client. It is implemented not only in Electrum but in most Bitcoin clients, including the original &amp;quot;Satoshi&amp;quot; Bitcoin client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How it works:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Whenever your Bitcoin client (e.g. Electrum) sends Bitcoins from your wallet&#039;s address &amp;quot;A&amp;quot; to a foreing address &amp;quot;B&amp;quot;, a new change address &amp;quot;C&amp;quot; is created by Electrum and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Example: Address &amp;quot;A&amp;quot; has 20 BTC. Electrum sends 9 BTC from &amp;quot;A&amp;quot; to &amp;quot;B&amp;quot;. The change (20-9 = 11 BTC) is sent to the &amp;quot;change address&amp;quot; &amp;quot;C&amp;quot;. For this purpose, address &amp;quot;C&amp;quot; is created by Electrum at this moment and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Exception: If all the Bitcoins of &amp;quot;A&amp;quot; are sent to &amp;quot;B&amp;quot;, there is no need for creating a change address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Actually, Bitcoin clients can also work without change addresses. In this case, the change would be sent back to &amp;quot;A&amp;quot; instead of the new address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why the concept of &amp;quot;change addresses&amp;quot; is useful:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Using a new change address makes it more difficult for other people (by analyzing the blockchain) to track how many Bitcoins you have or where you&#039;re spending them.&lt;br /&gt;
* It also conceals which output is the &amp;quot;spend&amp;quot; and which is the &amp;quot;change&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Imported Addresses===&lt;br /&gt;
Instead of generating new addresses in the default way from the wallet&#039;s [[#Seed|seed]], Electrum also allows you to import addresses (and their private keys of course) from external sources, e.g. from another Bitcoin client&#039;s wallet. For this, use Electrum&#039;s [[Electrum|command line]] options. Note that imported addresses cannot be derived from your wallet&#039;s [[#Seed|seed]] and therefore need to be secured separately for a complete backup of your wallet.&lt;br /&gt;
&lt;br /&gt;
Imported addresses can be used like any other [[#Normal Addresses|normal]] receive address with Electrum for transmission or reception of Bitcoins, and can also be (un)tagged as [[#What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?|&amp;quot;prioritized&amp;quot; or &amp;quot;frozen&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
===Deterministic Wallet===&lt;br /&gt;
====What is a &amp;quot;Deterministic Wallet&amp;quot; in Electrum?====&lt;br /&gt;
Traditionally, all new addresses (incl. the private keys of course) added to the wallet ([[#Normal Addresses|normal addresses]] or [[#Change Addresses|change addresses]]) are generated randomly. This is the case e.g. for the original &amp;quot;Satoshi Bitcoin Client&amp;quot; (at least as of today, version 0.6.2).&lt;br /&gt;
&lt;br /&gt;
Contrary to that, a Bitcoin client with a &amp;quot;Deterministic Wallet&amp;quot; will generate all new addresses accoding to a pre-defined (i.e. &amp;quot;deterministic&amp;quot;) algorithm as a function of a wallet-specific [[#Seed|seed]], which is a 128 bit number. This means, if the seed is known, all new addresses that Electrum will ever create for this wallet are known, because Electrum&#039;s algorithm is known (and open source).&lt;br /&gt;
This is a big advantage when it comes to making wallet backups:&lt;br /&gt;
* &#039;&#039;Traditionally&#039;&#039;, a wallet backup just contains the bitcoin addresses (and private keys of course) that have been created by the client by the time the backup was made. If the user performs transactions after the backup, new addresses ([[#Normal Addresses|normal]] or [[#Change Addresses|change]] addresses) will be generated and added to the wallet. These are not included in the backup yet. If the wallet in use gets lost, all the Bitcoins that are associated with the new addresses will also be lost. To avoid the risk of a too high loss, regular wallet backups are important.&lt;br /&gt;
* &#039;&#039;With a Deterministic Wallet&#039;&#039; (like with Electrum), the wallet backup only needs to contain the seed, and all new addresses generated in the future are already secured by the initial backup. Hence, regular new backups are not required!&lt;br /&gt;
&lt;br /&gt;
===Seed===&lt;br /&gt;
====What is the &amp;quot;Seed&amp;quot; of a Deterministic Wallet in Electrum?====&lt;br /&gt;
The Seed of a [[#Deterministic Wallet|deterministic wallet]] is a series of 128 random bits in Electrum.&lt;br /&gt;
For convenience, a seed can also be expressed by a sequence of 12 words in Electrum, and it also supports generation of a QR code to facilitate the backup of the seed.&lt;br /&gt;
&lt;br /&gt;
So there are 2^128 possible seeds for a deterministic wallet in Electrum.&lt;br /&gt;
For comparison, the total number of Bitcoin addresses is 2^160, and the number of atoms on earth is 2^166.&lt;br /&gt;
So there exists one Bitcoin address per 1 Million atoms on earth, and there exists one seed of Electrum wallets per 4.3 Billion Bitcoin addresses.&lt;br /&gt;
(By the way: The number of atoms in the complete universe is estimated as 2^266).&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
Open Point: It is _not clear_ whether the algorithm of deterministic address generation is designed such that for any two seeds &amp;quot;S1&amp;quot; and &amp;quot;S2&amp;quot; (out of the 2^128 possible different seeds) the following condition holds true:&lt;br /&gt;
* If 4.3 Billion (2^32 to be exact) new addresses are calculated from each S1 and from S2, does the algorithm guarantee that there will be no collision between the set of 2^32 addresses from S1 and the set of 2^32 addresses from S2?&lt;br /&gt;
If this condition does not hold true, it needs to be clarified whether the use of deterministic wallets still bares an acceptably low probability of address collisions.&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
===What is the &amp;quot;Gap Limit&amp;quot;?===&lt;br /&gt;
&lt;br /&gt;
The gap limit is the maximal number of contiguous unused addresses in your deterministic sequence of addresses.&lt;br /&gt;
&lt;br /&gt;
If you recover your wallet from seed, you will notice that the gap limit is asked by the recovery dialog.&lt;br /&gt;
It is used in order to decide when to stop the recovery procedure.&lt;br /&gt;
&lt;br /&gt;
If you need to have more receiving addresses in your wallet, you may increase your gap limit (expert mode).&lt;br /&gt;
This, however, means that you will need to remember the new limit in order to be able to recover your wallet from seed.&lt;br /&gt;
&lt;br /&gt;
==More on the Electrum GUI==&lt;br /&gt;
===What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?===&lt;br /&gt;
When sending Bitcoins to a foreign address, Electrum will by default use a built-in method to select the address(es) of the wallet used for sending these Bitcoins.&lt;br /&gt;
&lt;br /&gt;
* When you &#039;&#039;prioritize&#039;&#039; some of your wallet&#039;s addresses, these addresses will be used with preference. Other addresses will not be used until the prioritized addresses contain no more Bitcoins.&lt;br /&gt;
* When you &#039;&#039;freeze&#039;&#039; some of your wallet&#039;s addresses, these addresses will not be used for sending bitcoins. Instead, other addresses will be used. Sending Bitcoins is not possible if the non-frozen addresses of your wallet do not contain enough funds. &lt;br /&gt;
&lt;br /&gt;
The user can (de)prioritize or (un)freeze both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses.&lt;br /&gt;
&lt;br /&gt;
Note: Clearly, an address can not be &amp;quot;prioritized&amp;quot; and &amp;quot;frozen&amp;quot; at the same time.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Tx&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab (own wallet&#039;s addresses) and &amp;quot;Contacts&amp;quot; tab (foreing addresses).&lt;br /&gt;
&lt;br /&gt;
Tx stands for {... ?? &amp;quot;Transaction&amp;quot;? &amp;quot;Transmission&amp;quot; ?? ...}&lt;br /&gt;
&lt;br /&gt;
The Tx column in Electrum displays a number for each Bitcoin address in the address list, both for own addresses (&amp;quot;Receive&amp;quot; tab) and for foreing addresses (&amp;quot;Contacts&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Receive&amp;quot; tab (own addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of _incoming_ Bitcoin transactions that have ever been sent to this address.&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
The number of outgoing transactions is apparently not counted. It is unclear why the column is called &amp;quot;Tx&amp;quot; and not &amp;quot;Rx&amp;quot;, because it indicates the number of times that Bitcoins have been sent to this address, i.e. how often this address has &amp;quot;received&amp;quot; Bitcoins.&lt;br /&gt;
Does this &amp;quot;Tx&amp;quot; come from blockchain/blockexplorer terminology? Or why is it called &amp;quot;Tx&amp;quot; (&amp;quot;transmit&amp;quot;) and not &amp;quot;Rx&amp;quot; (&amp;quot;receive&amp;quot;)? To be clarified.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Contacts&amp;quot; tab (foreign addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of Bitcoin transactions that have ever been carried out from addresses of the current wallet towards this contact address&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Balance&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
The balance column indicates the amount of Bitcoins belonging to the given address.&lt;br /&gt;
The individual balances add up to the total balance of your wallet.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Flag&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
This column indicates certain properties of the different addresses:&lt;br /&gt;
* C = [[#Change Addresses|Change address]] (without a &amp;quot;C&amp;quot; it means it is a [[#Normal Addresses|normal address]])&lt;br /&gt;
* P = Prioritized address&lt;br /&gt;
* F = Frozen address&lt;br /&gt;
* I = [[#Imported Addresses|Imported address]]&lt;br /&gt;
&lt;br /&gt;
Note: P and F flags can be applied to both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses, and also to [[#Imported Addresses|imported addresses]].&lt;br /&gt;
&lt;br /&gt;
===What do colors mean?===&lt;br /&gt;
In the Receive tab:&lt;br /&gt;
*green = prioritized&lt;br /&gt;
*blue = frozen&lt;br /&gt;
In the Contacts tab:&lt;br /&gt;
*gray = alias&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
=== &#039;transaction rejected by memorypool&#039; errors ===&lt;br /&gt;
&lt;br /&gt;
When you send a transaction, there is a delay before the Electrum client displays the transaction in its history.&lt;br /&gt;
This is because the server polls bitcoind&#039;s memorypool every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
If you create another transaction during this interval, during which the first tx is not displayed,&lt;br /&gt;
then your client will pick the same coins again, and the transaction will be rejected as a double spend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://ecdsa.org/electrum Electrum] project website&lt;br /&gt;
* [https://gitorious.org/electrum Electrum] project source (gitorius)&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=50936.msg950497#msg950497 Electrum Forum] - here this documentation was started&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27777</id>
		<title>Electrum/Documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27777"/>
		<updated>2012-06-12T22:34:38Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* What does the &amp;quot;Balance&amp;quot; column mean in Electrum? */ added &amp;quot;Expert Mode only&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation of Electrum Bitcoin Client (Focus on the GUI)==&lt;br /&gt;
This page tries to document certain aspects of the [[Electrum|Electrum]] Bitcoin Client. The focus is on explaining certain aspects of its GUI, such that it gets easier for the user to understand its use.&lt;br /&gt;
&lt;br /&gt;
More documentation, especially with regard to command line parameters, can be found at the parent page of this Wiki, i.e. [[Electrum|here]].&lt;br /&gt;
&lt;br /&gt;
==How to Read this Documentation==&lt;br /&gt;
* Text in curly brackets {like this} means that the author(s) of this documentation are not really sure about this... --&amp;gt; other people are welcome to correct/clarify&lt;br /&gt;
&lt;br /&gt;
==What is a &amp;quot;Wallet&amp;quot; and a &amp;quot;Bitcoin Address&amp;quot;?==&lt;br /&gt;
* (General, not specific to Electrum)&lt;br /&gt;
&lt;br /&gt;
Your wallet is a list of Bitcoin addresses (more precisely: a list of privat/public key pairs). Each address &amp;quot;contains&amp;quot; (or is associated with) a certain amount of Bitcoins at a given time.&lt;br /&gt;
&lt;br /&gt;
Your wallet&#039;s balance is the sum of all Bitcoins of all your wallet&#039;s Bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
Your wallet consists of both [[#Normal Addresses|normal addresses]] and [[#Change Addresses|change addresses]]. Although they are fully equivalent from the Bitcoin protocol&#039;s point of view, they are different in how they are used by Bitcoin clients like Electrum.&lt;br /&gt;
&lt;br /&gt;
===Normal Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====How are New &amp;quot;Normal Addresses&amp;quot; Created for my Wallet?====&lt;br /&gt;
The Bitcoin client (e.g. Electrum) allows you to trigger manually the generation of a new Bitcoin address. You typically want to create a new address when you want to receive Bitcoins from somebody and do not want to use any of the wallet&#039;s present addresses that have already been used for earlier Bitcoin transfers, for privacy reasons (note that all transfers are publically visible in the blockchain).&lt;br /&gt;
&lt;br /&gt;
Another way of adding addresses to your wallet is to [[#Imported Addresses|import]] private keys (with their addresses of course), using Electrum&#039;s [[Electrum|command line options]]. See section about [[#Imported Addresses|imported addresses]] for more details.&lt;br /&gt;
&lt;br /&gt;
===Change Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====What is a &amp;quot;Change Address&amp;quot;, and why is it useful?====&lt;br /&gt;
The concept of change addresses is a feature not of the Bitcoin protocol, but of a Bitcoin client. It is implemented not only in Electrum but in most Bitcoin clients, including the original &amp;quot;Satoshi&amp;quot; Bitcoin client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How it works:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Whenever your Bitcoin client (e.g. Electrum) sends Bitcoins from your wallet&#039;s address &amp;quot;A&amp;quot; to a foreing address &amp;quot;B&amp;quot;, a new change address &amp;quot;C&amp;quot; is created by Electrum and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Example: Address &amp;quot;A&amp;quot; has 20 BTC. Electrum sends 9 BTC from &amp;quot;A&amp;quot; to &amp;quot;B&amp;quot;. The change (20-9 = 11 BTC) is sent to the &amp;quot;change address&amp;quot; &amp;quot;C&amp;quot;. For this purpose, address &amp;quot;C&amp;quot; is created by Electrum at this moment and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Exception: If all the Bitcoins of &amp;quot;A&amp;quot; are sent to &amp;quot;B&amp;quot;, there is no need for creating a change address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Actually, Bitcoin clients can also work without change addresses. In this case, the change would be sent back to &amp;quot;A&amp;quot; instead of the new address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why the concept of &amp;quot;change addresses&amp;quot; is useful:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Using a new change address makes it more difficult for other people (by analyzing the blockchain) to track how many Bitcoins you have or where you&#039;re spending them.&lt;br /&gt;
* It also conceals which output is the &amp;quot;spend&amp;quot; and which is the &amp;quot;change&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Imported Addresses===&lt;br /&gt;
Instead of generating new addresses in the default way from the wallet&#039;s [[#Seed|seed]], Electrum also allows you to import addresses (and their private keys of course) from external sources, e.g. from another Bitcoin client&#039;s wallet. For this, use Electrum&#039;s [[Electrum|command line]] options. Note that imported addresses cannot be derived from your wallet&#039;s [[#Seed|seed]] and therefore need to be secured separately for a complete backup of your wallet.&lt;br /&gt;
&lt;br /&gt;
Imported addresses can be used like any other [[#Normal Addresses|normal]] receive address with Electrum for transmission or reception of Bitcoins, and can also be (un)tagged as [[#What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?|&amp;quot;prioritized&amp;quot; or &amp;quot;frozen&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
===Deterministic Wallet===&lt;br /&gt;
====What is a &amp;quot;Deterministic Wallet&amp;quot; in Electrum?====&lt;br /&gt;
Traditionally, all new addresses (incl. the private keys of course) added to the wallet ([[#Normal Addresses|normal addresses]] or [[#Change Addresses|change addresses]]) are generated randomly. This is the case e.g. for the original &amp;quot;Satoshi Bitcoin Client&amp;quot; (at least as of today, version 0.6.2).&lt;br /&gt;
&lt;br /&gt;
Contrary to that, a Bitcoin client with a &amp;quot;Deterministic Wallet&amp;quot; will generate all new addresses accoding to a pre-defined (i.e. &amp;quot;deterministic&amp;quot;) algorithm as a function of a wallet-specific [[#Seed|seed]], which is a 128 bit number. This means, if the seed is known, all new addresses that Electrum will ever create for this wallet are known, because Electrum&#039;s algorithm is known (and open source).&lt;br /&gt;
This is a big advantage when it comes to making wallet backups:&lt;br /&gt;
* &#039;&#039;Traditionally&#039;&#039;, a wallet backup just contains the bitcoin addresses (and private keys of course) that have been created by the client by the time the backup was made. If the user performs transactions after the backup, new addresses ([[#Normal Addresses|normal]] or [[#Change Addresses|change]] addresses) will be generated and added to the wallet. These are not included in the backup yet. If the wallet in use gets lost, all the Bitcoins that are associated with the new addresses will also be lost. To avoid the risk of a too high loss, regular wallet backups are important.&lt;br /&gt;
* &#039;&#039;With a Deterministic Wallet&#039;&#039; (like with Electrum), the wallet backup only needs to contain the seed, and all new addresses generated in the future are already secured by the initial backup. Hence, regular new backups are not required!&lt;br /&gt;
&lt;br /&gt;
===Seed===&lt;br /&gt;
====What is the &amp;quot;Seed&amp;quot; of a Deterministic Wallet in Electrum?====&lt;br /&gt;
The Seed of a [[#Deterministic Wallet|deterministic wallet]] is a series of 128 random bits in Electrum.&lt;br /&gt;
For convenience, a seed can also be expressed by a sequence of 12 words in Electrum, and it also supports generation of a QR code to facilitate the backup of the seed.&lt;br /&gt;
&lt;br /&gt;
So there are 2^128 possible seeds for a deterministic wallet in Electrum.&lt;br /&gt;
For comparison, the total number of Bitcoin addresses is 2^160, and the number of atoms on earth is 2^166.&lt;br /&gt;
So there exists one Bitcoin address per 1 Million atoms on earth, and there exists one seed of Electrum wallets per 4.3 Billion Bitcoin addresses.&lt;br /&gt;
(By the way: The number of atoms in the complete universe is estimated as 2^266).&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
Open Point: It is _not clear_ whether the algorithm of deterministic address generation is designed such that for any two seeds &amp;quot;S1&amp;quot; and &amp;quot;S2&amp;quot; (out of the 2^128 possible different seeds) the following condition holds true:&lt;br /&gt;
* If 4.3 Billion (2^32 to be exact) new addresses are calculated from each S1 and from S2, does the algorithm guarantee that there will be no collision between the set of 2^32 addresses from S1 and the set of 2^32 addresses from S2?&lt;br /&gt;
If this condition does not hold true, it needs to be clarified whether the use of deterministic wallets still bares an acceptably low probability of address collisions.&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
===What is the &amp;quot;Gap Limit&amp;quot;?===&lt;br /&gt;
&lt;br /&gt;
The gap limit is the maximal number of contiguous unused addresses in your deterministic sequence of addresses.&lt;br /&gt;
&lt;br /&gt;
If you recover your wallet from seed, you will notice that the gap limit is asked by the recovery dialog.&lt;br /&gt;
It is used in order to decide when to stop the recovery procedure.&lt;br /&gt;
&lt;br /&gt;
If you need to have more receiving addresses in your wallet, you may increase your gap limit (expert mode).&lt;br /&gt;
This, however, means that you will need to remember the new limit in order to be able to recover your wallet from seed.&lt;br /&gt;
&lt;br /&gt;
==More on the Electrum GUI==&lt;br /&gt;
===What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?===&lt;br /&gt;
When sending Bitcoins to a foreign address, Electrum will by default use a built-in method to select the address(es) of the wallet used for sending these Bitcoins.&lt;br /&gt;
&lt;br /&gt;
* When you &#039;&#039;prioritize&#039;&#039; some of your wallet&#039;s addresses, these addresses will be used with preference. Other addresses will not be used until the prioritized addresses contain no more Bitcoins.&lt;br /&gt;
* When you &#039;&#039;freeze&#039;&#039; some of your wallet&#039;s addresses, these addresses will not be used for sending bitcoins. Instead, other addresses will be used. Sending Bitcoins is not possible if the non-frozen addresses of your wallet do not contain enough funds. &lt;br /&gt;
&lt;br /&gt;
The user can (de)prioritize or (un)freeze both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses.&lt;br /&gt;
&lt;br /&gt;
Note: Clearly, an address can not be &amp;quot;prioritized&amp;quot; and &amp;quot;frozen&amp;quot; at the same time.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Tx&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab (own wallet&#039;s addresses) and &amp;quot;Contacts&amp;quot; tab (foreing addresses).&lt;br /&gt;
&lt;br /&gt;
Tx stands for {... ?? &amp;quot;Transaction&amp;quot;? &amp;quot;Transmission&amp;quot; ?? ...}&lt;br /&gt;
&lt;br /&gt;
The Tx column in Electrum displays a number for each Bitcoin address in the address list, both for own addresses (&amp;quot;Receive&amp;quot; tab) and for foreing addresses (&amp;quot;Contacts&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Receive&amp;quot; tab (own addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of _incoming_ Bitcoin transactions that have ever been sent to this address.&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
The number of outgoing transactions is apparently not counted. It is unclear why the column is called &amp;quot;Tx&amp;quot; and not &amp;quot;Rx&amp;quot;, because it indicates the number of times that Bitcoins have been sent to this address, i.e. how often this address has &amp;quot;received&amp;quot; Bitcoins.&lt;br /&gt;
Does this &amp;quot;Tx&amp;quot; come from blockchain/blockexplorer terminology? Or why is it called &amp;quot;Tx&amp;quot; (&amp;quot;transmit&amp;quot;) and not &amp;quot;Rx&amp;quot; (&amp;quot;receive&amp;quot;)? To be clarified.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Contacts&amp;quot; tab (foreign addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of Bitcoin transactions that have ever been carried out from addresses of the current wallet towards this contact address&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Balance&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
The balance column indicates the amount of Bitcoins belonging to the given address.&lt;br /&gt;
The individual balances add up to the total balance of your wallet.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Flag&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
This column indicates certain properties of the different addresses:&lt;br /&gt;
* C = [[#Change Addresses|Change address]] (without a &amp;quot;C&amp;quot; it means it is a [[#Normal Addresses|normal address]])&lt;br /&gt;
* P = Prioritized address&lt;br /&gt;
* F = Frozen address&lt;br /&gt;
* I = [[#Imported Addresses|Imported address]]&lt;br /&gt;
&lt;br /&gt;
Note: P and F flags can be applied to both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses, and also to [[#Imported Addresses|imported addresses]].&lt;br /&gt;
&lt;br /&gt;
===What do colors mean?===&lt;br /&gt;
In the Receive tab:&lt;br /&gt;
*green = prioritized&lt;br /&gt;
*blue = frozen&lt;br /&gt;
In the Contacts tab:&lt;br /&gt;
*gray = alias&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
=== &#039;transaction rejected by memorypool&#039; errors ===&lt;br /&gt;
&lt;br /&gt;
When you send a transaction, there is a delay before the Electrum client displays the transaction in its history.&lt;br /&gt;
This is because the server polls bitcoind&#039;s memorypool every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
If you create another transaction during this interval, during which the first tx is not displayed,&lt;br /&gt;
then your client will pick the same coins again, and the transaction will be rejected as a double spend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://ecdsa.org/electrum Electrum] project website&lt;br /&gt;
* [https://gitorious.org/electrum Electrum] project source (gitorius)&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=50936.msg950497#msg950497 Electrum Forum] - here this documentation was started&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27776</id>
		<title>Electrum/Documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27776"/>
		<updated>2012-06-12T22:34:18Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* What does the &amp;quot;Tx&amp;quot; column mean in Electrum? */ added &amp;quot;expert mode only&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation of Electrum Bitcoin Client (Focus on the GUI)==&lt;br /&gt;
This page tries to document certain aspects of the [[Electrum|Electrum]] Bitcoin Client. The focus is on explaining certain aspects of its GUI, such that it gets easier for the user to understand its use.&lt;br /&gt;
&lt;br /&gt;
More documentation, especially with regard to command line parameters, can be found at the parent page of this Wiki, i.e. [[Electrum|here]].&lt;br /&gt;
&lt;br /&gt;
==How to Read this Documentation==&lt;br /&gt;
* Text in curly brackets {like this} means that the author(s) of this documentation are not really sure about this... --&amp;gt; other people are welcome to correct/clarify&lt;br /&gt;
&lt;br /&gt;
==What is a &amp;quot;Wallet&amp;quot; and a &amp;quot;Bitcoin Address&amp;quot;?==&lt;br /&gt;
* (General, not specific to Electrum)&lt;br /&gt;
&lt;br /&gt;
Your wallet is a list of Bitcoin addresses (more precisely: a list of privat/public key pairs). Each address &amp;quot;contains&amp;quot; (or is associated with) a certain amount of Bitcoins at a given time.&lt;br /&gt;
&lt;br /&gt;
Your wallet&#039;s balance is the sum of all Bitcoins of all your wallet&#039;s Bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
Your wallet consists of both [[#Normal Addresses|normal addresses]] and [[#Change Addresses|change addresses]]. Although they are fully equivalent from the Bitcoin protocol&#039;s point of view, they are different in how they are used by Bitcoin clients like Electrum.&lt;br /&gt;
&lt;br /&gt;
===Normal Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====How are New &amp;quot;Normal Addresses&amp;quot; Created for my Wallet?====&lt;br /&gt;
The Bitcoin client (e.g. Electrum) allows you to trigger manually the generation of a new Bitcoin address. You typically want to create a new address when you want to receive Bitcoins from somebody and do not want to use any of the wallet&#039;s present addresses that have already been used for earlier Bitcoin transfers, for privacy reasons (note that all transfers are publically visible in the blockchain).&lt;br /&gt;
&lt;br /&gt;
Another way of adding addresses to your wallet is to [[#Imported Addresses|import]] private keys (with their addresses of course), using Electrum&#039;s [[Electrum|command line options]]. See section about [[#Imported Addresses|imported addresses]] for more details.&lt;br /&gt;
&lt;br /&gt;
===Change Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====What is a &amp;quot;Change Address&amp;quot;, and why is it useful?====&lt;br /&gt;
The concept of change addresses is a feature not of the Bitcoin protocol, but of a Bitcoin client. It is implemented not only in Electrum but in most Bitcoin clients, including the original &amp;quot;Satoshi&amp;quot; Bitcoin client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How it works:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Whenever your Bitcoin client (e.g. Electrum) sends Bitcoins from your wallet&#039;s address &amp;quot;A&amp;quot; to a foreing address &amp;quot;B&amp;quot;, a new change address &amp;quot;C&amp;quot; is created by Electrum and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Example: Address &amp;quot;A&amp;quot; has 20 BTC. Electrum sends 9 BTC from &amp;quot;A&amp;quot; to &amp;quot;B&amp;quot;. The change (20-9 = 11 BTC) is sent to the &amp;quot;change address&amp;quot; &amp;quot;C&amp;quot;. For this purpose, address &amp;quot;C&amp;quot; is created by Electrum at this moment and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Exception: If all the Bitcoins of &amp;quot;A&amp;quot; are sent to &amp;quot;B&amp;quot;, there is no need for creating a change address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Actually, Bitcoin clients can also work without change addresses. In this case, the change would be sent back to &amp;quot;A&amp;quot; instead of the new address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why the concept of &amp;quot;change addresses&amp;quot; is useful:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Using a new change address makes it more difficult for other people (by analyzing the blockchain) to track how many Bitcoins you have or where you&#039;re spending them.&lt;br /&gt;
* It also conceals which output is the &amp;quot;spend&amp;quot; and which is the &amp;quot;change&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Imported Addresses===&lt;br /&gt;
Instead of generating new addresses in the default way from the wallet&#039;s [[#Seed|seed]], Electrum also allows you to import addresses (and their private keys of course) from external sources, e.g. from another Bitcoin client&#039;s wallet. For this, use Electrum&#039;s [[Electrum|command line]] options. Note that imported addresses cannot be derived from your wallet&#039;s [[#Seed|seed]] and therefore need to be secured separately for a complete backup of your wallet.&lt;br /&gt;
&lt;br /&gt;
Imported addresses can be used like any other [[#Normal Addresses|normal]] receive address with Electrum for transmission or reception of Bitcoins, and can also be (un)tagged as [[#What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?|&amp;quot;prioritized&amp;quot; or &amp;quot;frozen&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
===Deterministic Wallet===&lt;br /&gt;
====What is a &amp;quot;Deterministic Wallet&amp;quot; in Electrum?====&lt;br /&gt;
Traditionally, all new addresses (incl. the private keys of course) added to the wallet ([[#Normal Addresses|normal addresses]] or [[#Change Addresses|change addresses]]) are generated randomly. This is the case e.g. for the original &amp;quot;Satoshi Bitcoin Client&amp;quot; (at least as of today, version 0.6.2).&lt;br /&gt;
&lt;br /&gt;
Contrary to that, a Bitcoin client with a &amp;quot;Deterministic Wallet&amp;quot; will generate all new addresses accoding to a pre-defined (i.e. &amp;quot;deterministic&amp;quot;) algorithm as a function of a wallet-specific [[#Seed|seed]], which is a 128 bit number. This means, if the seed is known, all new addresses that Electrum will ever create for this wallet are known, because Electrum&#039;s algorithm is known (and open source).&lt;br /&gt;
This is a big advantage when it comes to making wallet backups:&lt;br /&gt;
* &#039;&#039;Traditionally&#039;&#039;, a wallet backup just contains the bitcoin addresses (and private keys of course) that have been created by the client by the time the backup was made. If the user performs transactions after the backup, new addresses ([[#Normal Addresses|normal]] or [[#Change Addresses|change]] addresses) will be generated and added to the wallet. These are not included in the backup yet. If the wallet in use gets lost, all the Bitcoins that are associated with the new addresses will also be lost. To avoid the risk of a too high loss, regular wallet backups are important.&lt;br /&gt;
* &#039;&#039;With a Deterministic Wallet&#039;&#039; (like with Electrum), the wallet backup only needs to contain the seed, and all new addresses generated in the future are already secured by the initial backup. Hence, regular new backups are not required!&lt;br /&gt;
&lt;br /&gt;
===Seed===&lt;br /&gt;
====What is the &amp;quot;Seed&amp;quot; of a Deterministic Wallet in Electrum?====&lt;br /&gt;
The Seed of a [[#Deterministic Wallet|deterministic wallet]] is a series of 128 random bits in Electrum.&lt;br /&gt;
For convenience, a seed can also be expressed by a sequence of 12 words in Electrum, and it also supports generation of a QR code to facilitate the backup of the seed.&lt;br /&gt;
&lt;br /&gt;
So there are 2^128 possible seeds for a deterministic wallet in Electrum.&lt;br /&gt;
For comparison, the total number of Bitcoin addresses is 2^160, and the number of atoms on earth is 2^166.&lt;br /&gt;
So there exists one Bitcoin address per 1 Million atoms on earth, and there exists one seed of Electrum wallets per 4.3 Billion Bitcoin addresses.&lt;br /&gt;
(By the way: The number of atoms in the complete universe is estimated as 2^266).&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
Open Point: It is _not clear_ whether the algorithm of deterministic address generation is designed such that for any two seeds &amp;quot;S1&amp;quot; and &amp;quot;S2&amp;quot; (out of the 2^128 possible different seeds) the following condition holds true:&lt;br /&gt;
* If 4.3 Billion (2^32 to be exact) new addresses are calculated from each S1 and from S2, does the algorithm guarantee that there will be no collision between the set of 2^32 addresses from S1 and the set of 2^32 addresses from S2?&lt;br /&gt;
If this condition does not hold true, it needs to be clarified whether the use of deterministic wallets still bares an acceptably low probability of address collisions.&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
===What is the &amp;quot;Gap Limit&amp;quot;?===&lt;br /&gt;
&lt;br /&gt;
The gap limit is the maximal number of contiguous unused addresses in your deterministic sequence of addresses.&lt;br /&gt;
&lt;br /&gt;
If you recover your wallet from seed, you will notice that the gap limit is asked by the recovery dialog.&lt;br /&gt;
It is used in order to decide when to stop the recovery procedure.&lt;br /&gt;
&lt;br /&gt;
If you need to have more receiving addresses in your wallet, you may increase your gap limit (expert mode).&lt;br /&gt;
This, however, means that you will need to remember the new limit in order to be able to recover your wallet from seed.&lt;br /&gt;
&lt;br /&gt;
==More on the Electrum GUI==&lt;br /&gt;
===What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?===&lt;br /&gt;
When sending Bitcoins to a foreign address, Electrum will by default use a built-in method to select the address(es) of the wallet used for sending these Bitcoins.&lt;br /&gt;
&lt;br /&gt;
* When you &#039;&#039;prioritize&#039;&#039; some of your wallet&#039;s addresses, these addresses will be used with preference. Other addresses will not be used until the prioritized addresses contain no more Bitcoins.&lt;br /&gt;
* When you &#039;&#039;freeze&#039;&#039; some of your wallet&#039;s addresses, these addresses will not be used for sending bitcoins. Instead, other addresses will be used. Sending Bitcoins is not possible if the non-frozen addresses of your wallet do not contain enough funds. &lt;br /&gt;
&lt;br /&gt;
The user can (de)prioritize or (un)freeze both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses.&lt;br /&gt;
&lt;br /&gt;
Note: Clearly, an address can not be &amp;quot;prioritized&amp;quot; and &amp;quot;frozen&amp;quot; at the same time.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Tx&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Expert Mode only&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab (own wallet&#039;s addresses) and &amp;quot;Contacts&amp;quot; tab (foreing addresses).&lt;br /&gt;
&lt;br /&gt;
Tx stands for {... ?? &amp;quot;Transaction&amp;quot;? &amp;quot;Transmission&amp;quot; ?? ...}&lt;br /&gt;
&lt;br /&gt;
The Tx column in Electrum displays a number for each Bitcoin address in the address list, both for own addresses (&amp;quot;Receive&amp;quot; tab) and for foreing addresses (&amp;quot;Contacts&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Receive&amp;quot; tab (own addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of _incoming_ Bitcoin transactions that have ever been sent to this address.&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
The number of outgoing transactions is apparently not counted. It is unclear why the column is called &amp;quot;Tx&amp;quot; and not &amp;quot;Rx&amp;quot;, because it indicates the number of times that Bitcoins have been sent to this address, i.e. how often this address has &amp;quot;received&amp;quot; Bitcoins.&lt;br /&gt;
Does this &amp;quot;Tx&amp;quot; come from blockchain/blockexplorer terminology? Or why is it called &amp;quot;Tx&amp;quot; (&amp;quot;transmit&amp;quot;) and not &amp;quot;Rx&amp;quot; (&amp;quot;receive&amp;quot;)? To be clarified.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Contacts&amp;quot; tab (foreign addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of Bitcoin transactions that have ever been carried out from addresses of the current wallet towards this contact address&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Balance&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
The balance column indicates the amount of Bitcoins belonging to the given address.&lt;br /&gt;
The individual balances add up to the total balance of your wallet.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Flag&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
This column indicates certain properties of the different addresses:&lt;br /&gt;
* C = [[#Change Addresses|Change address]] (without a &amp;quot;C&amp;quot; it means it is a [[#Normal Addresses|normal address]])&lt;br /&gt;
* P = Prioritized address&lt;br /&gt;
* F = Frozen address&lt;br /&gt;
* I = [[#Imported Addresses|Imported address]]&lt;br /&gt;
&lt;br /&gt;
Note: P and F flags can be applied to both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses, and also to [[#Imported Addresses|imported addresses]].&lt;br /&gt;
&lt;br /&gt;
===What do colors mean?===&lt;br /&gt;
In the Receive tab:&lt;br /&gt;
*green = prioritized&lt;br /&gt;
*blue = frozen&lt;br /&gt;
In the Contacts tab:&lt;br /&gt;
*gray = alias&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
=== &#039;transaction rejected by memorypool&#039; errors ===&lt;br /&gt;
&lt;br /&gt;
When you send a transaction, there is a delay before the Electrum client displays the transaction in its history.&lt;br /&gt;
This is because the server polls bitcoind&#039;s memorypool every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
If you create another transaction during this interval, during which the first tx is not displayed,&lt;br /&gt;
then your client will pick the same coins again, and the transaction will be rejected as a double spend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://ecdsa.org/electrum Electrum] project website&lt;br /&gt;
* [https://gitorious.org/electrum Electrum] project source (gitorius)&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=50936.msg950497#msg950497 Electrum Forum] - here this documentation was started&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27775</id>
		<title>Electrum/Documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27775"/>
		<updated>2012-06-12T22:32:03Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* What does the &amp;quot;Tx&amp;quot; column mean in Electrum? */ clarified number in Tx column in &amp;quot;contacts&amp;quot; tab&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation of Electrum Bitcoin Client (Focus on the GUI)==&lt;br /&gt;
This page tries to document certain aspects of the [[Electrum|Electrum]] Bitcoin Client. The focus is on explaining certain aspects of its GUI, such that it gets easier for the user to understand its use.&lt;br /&gt;
&lt;br /&gt;
More documentation, especially with regard to command line parameters, can be found at the parent page of this Wiki, i.e. [[Electrum|here]].&lt;br /&gt;
&lt;br /&gt;
==How to Read this Documentation==&lt;br /&gt;
* Text in curly brackets {like this} means that the author(s) of this documentation are not really sure about this... --&amp;gt; other people are welcome to correct/clarify&lt;br /&gt;
&lt;br /&gt;
==What is a &amp;quot;Wallet&amp;quot; and a &amp;quot;Bitcoin Address&amp;quot;?==&lt;br /&gt;
* (General, not specific to Electrum)&lt;br /&gt;
&lt;br /&gt;
Your wallet is a list of Bitcoin addresses (more precisely: a list of privat/public key pairs). Each address &amp;quot;contains&amp;quot; (or is associated with) a certain amount of Bitcoins at a given time.&lt;br /&gt;
&lt;br /&gt;
Your wallet&#039;s balance is the sum of all Bitcoins of all your wallet&#039;s Bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
Your wallet consists of both [[#Normal Addresses|normal addresses]] and [[#Change Addresses|change addresses]]. Although they are fully equivalent from the Bitcoin protocol&#039;s point of view, they are different in how they are used by Bitcoin clients like Electrum.&lt;br /&gt;
&lt;br /&gt;
===Normal Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====How are New &amp;quot;Normal Addresses&amp;quot; Created for my Wallet?====&lt;br /&gt;
The Bitcoin client (e.g. Electrum) allows you to trigger manually the generation of a new Bitcoin address. You typically want to create a new address when you want to receive Bitcoins from somebody and do not want to use any of the wallet&#039;s present addresses that have already been used for earlier Bitcoin transfers, for privacy reasons (note that all transfers are publically visible in the blockchain).&lt;br /&gt;
&lt;br /&gt;
Another way of adding addresses to your wallet is to [[#Imported Addresses|import]] private keys (with their addresses of course), using Electrum&#039;s [[Electrum|command line options]]. See section about [[#Imported Addresses|imported addresses]] for more details.&lt;br /&gt;
&lt;br /&gt;
===Change Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====What is a &amp;quot;Change Address&amp;quot;, and why is it useful?====&lt;br /&gt;
The concept of change addresses is a feature not of the Bitcoin protocol, but of a Bitcoin client. It is implemented not only in Electrum but in most Bitcoin clients, including the original &amp;quot;Satoshi&amp;quot; Bitcoin client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How it works:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Whenever your Bitcoin client (e.g. Electrum) sends Bitcoins from your wallet&#039;s address &amp;quot;A&amp;quot; to a foreing address &amp;quot;B&amp;quot;, a new change address &amp;quot;C&amp;quot; is created by Electrum and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Example: Address &amp;quot;A&amp;quot; has 20 BTC. Electrum sends 9 BTC from &amp;quot;A&amp;quot; to &amp;quot;B&amp;quot;. The change (20-9 = 11 BTC) is sent to the &amp;quot;change address&amp;quot; &amp;quot;C&amp;quot;. For this purpose, address &amp;quot;C&amp;quot; is created by Electrum at this moment and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Exception: If all the Bitcoins of &amp;quot;A&amp;quot; are sent to &amp;quot;B&amp;quot;, there is no need for creating a change address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Actually, Bitcoin clients can also work without change addresses. In this case, the change would be sent back to &amp;quot;A&amp;quot; instead of the new address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why the concept of &amp;quot;change addresses&amp;quot; is useful:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Using a new change address makes it more difficult for other people (by analyzing the blockchain) to track how many Bitcoins you have or where you&#039;re spending them.&lt;br /&gt;
* It also conceals which output is the &amp;quot;spend&amp;quot; and which is the &amp;quot;change&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Imported Addresses===&lt;br /&gt;
Instead of generating new addresses in the default way from the wallet&#039;s [[#Seed|seed]], Electrum also allows you to import addresses (and their private keys of course) from external sources, e.g. from another Bitcoin client&#039;s wallet. For this, use Electrum&#039;s [[Electrum|command line]] options. Note that imported addresses cannot be derived from your wallet&#039;s [[#Seed|seed]] and therefore need to be secured separately for a complete backup of your wallet.&lt;br /&gt;
&lt;br /&gt;
Imported addresses can be used like any other [[#Normal Addresses|normal]] receive address with Electrum for transmission or reception of Bitcoins, and can also be (un)tagged as [[#What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?|&amp;quot;prioritized&amp;quot; or &amp;quot;frozen&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
===Deterministic Wallet===&lt;br /&gt;
====What is a &amp;quot;Deterministic Wallet&amp;quot; in Electrum?====&lt;br /&gt;
Traditionally, all new addresses (incl. the private keys of course) added to the wallet ([[#Normal Addresses|normal addresses]] or [[#Change Addresses|change addresses]]) are generated randomly. This is the case e.g. for the original &amp;quot;Satoshi Bitcoin Client&amp;quot; (at least as of today, version 0.6.2).&lt;br /&gt;
&lt;br /&gt;
Contrary to that, a Bitcoin client with a &amp;quot;Deterministic Wallet&amp;quot; will generate all new addresses accoding to a pre-defined (i.e. &amp;quot;deterministic&amp;quot;) algorithm as a function of a wallet-specific [[#Seed|seed]], which is a 128 bit number. This means, if the seed is known, all new addresses that Electrum will ever create for this wallet are known, because Electrum&#039;s algorithm is known (and open source).&lt;br /&gt;
This is a big advantage when it comes to making wallet backups:&lt;br /&gt;
* &#039;&#039;Traditionally&#039;&#039;, a wallet backup just contains the bitcoin addresses (and private keys of course) that have been created by the client by the time the backup was made. If the user performs transactions after the backup, new addresses ([[#Normal Addresses|normal]] or [[#Change Addresses|change]] addresses) will be generated and added to the wallet. These are not included in the backup yet. If the wallet in use gets lost, all the Bitcoins that are associated with the new addresses will also be lost. To avoid the risk of a too high loss, regular wallet backups are important.&lt;br /&gt;
* &#039;&#039;With a Deterministic Wallet&#039;&#039; (like with Electrum), the wallet backup only needs to contain the seed, and all new addresses generated in the future are already secured by the initial backup. Hence, regular new backups are not required!&lt;br /&gt;
&lt;br /&gt;
===Seed===&lt;br /&gt;
====What is the &amp;quot;Seed&amp;quot; of a Deterministic Wallet in Electrum?====&lt;br /&gt;
The Seed of a [[#Deterministic Wallet|deterministic wallet]] is a series of 128 random bits in Electrum.&lt;br /&gt;
For convenience, a seed can also be expressed by a sequence of 12 words in Electrum, and it also supports generation of a QR code to facilitate the backup of the seed.&lt;br /&gt;
&lt;br /&gt;
So there are 2^128 possible seeds for a deterministic wallet in Electrum.&lt;br /&gt;
For comparison, the total number of Bitcoin addresses is 2^160, and the number of atoms on earth is 2^166.&lt;br /&gt;
So there exists one Bitcoin address per 1 Million atoms on earth, and there exists one seed of Electrum wallets per 4.3 Billion Bitcoin addresses.&lt;br /&gt;
(By the way: The number of atoms in the complete universe is estimated as 2^266).&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
Open Point: It is _not clear_ whether the algorithm of deterministic address generation is designed such that for any two seeds &amp;quot;S1&amp;quot; and &amp;quot;S2&amp;quot; (out of the 2^128 possible different seeds) the following condition holds true:&lt;br /&gt;
* If 4.3 Billion (2^32 to be exact) new addresses are calculated from each S1 and from S2, does the algorithm guarantee that there will be no collision between the set of 2^32 addresses from S1 and the set of 2^32 addresses from S2?&lt;br /&gt;
If this condition does not hold true, it needs to be clarified whether the use of deterministic wallets still bares an acceptably low probability of address collisions.&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
===What is the &amp;quot;Gap Limit&amp;quot;?===&lt;br /&gt;
&lt;br /&gt;
The gap limit is the maximal number of contiguous unused addresses in your deterministic sequence of addresses.&lt;br /&gt;
&lt;br /&gt;
If you recover your wallet from seed, you will notice that the gap limit is asked by the recovery dialog.&lt;br /&gt;
It is used in order to decide when to stop the recovery procedure.&lt;br /&gt;
&lt;br /&gt;
If you need to have more receiving addresses in your wallet, you may increase your gap limit (expert mode).&lt;br /&gt;
This, however, means that you will need to remember the new limit in order to be able to recover your wallet from seed.&lt;br /&gt;
&lt;br /&gt;
==More on the Electrum GUI==&lt;br /&gt;
===What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?===&lt;br /&gt;
When sending Bitcoins to a foreign address, Electrum will by default use a built-in method to select the address(es) of the wallet used for sending these Bitcoins.&lt;br /&gt;
&lt;br /&gt;
* When you &#039;&#039;prioritize&#039;&#039; some of your wallet&#039;s addresses, these addresses will be used with preference. Other addresses will not be used until the prioritized addresses contain no more Bitcoins.&lt;br /&gt;
* When you &#039;&#039;freeze&#039;&#039; some of your wallet&#039;s addresses, these addresses will not be used for sending bitcoins. Instead, other addresses will be used. Sending Bitcoins is not possible if the non-frozen addresses of your wallet do not contain enough funds. &lt;br /&gt;
&lt;br /&gt;
The user can (de)prioritize or (un)freeze both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses.&lt;br /&gt;
&lt;br /&gt;
Note: Clearly, an address can not be &amp;quot;prioritized&amp;quot; and &amp;quot;frozen&amp;quot; at the same time.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Tx&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab (own wallet&#039;s addresses) and &amp;quot;Contacts&amp;quot; tab (foreing addresses).&lt;br /&gt;
&lt;br /&gt;
Tx stands for {... ?? &amp;quot;Transaction&amp;quot;? &amp;quot;Transmission&amp;quot; ?? ...}&lt;br /&gt;
&lt;br /&gt;
The Tx column in Electrum displays a number for each Bitcoin address in the address list, both for own addresses (&amp;quot;Receive&amp;quot; tab) and for foreing addresses (&amp;quot;Contacts&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Receive&amp;quot; tab (own addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of _incoming_ Bitcoin transactions that have ever been sent to this address.&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
The number of outgoing transactions is apparently not counted. It is unclear why the column is called &amp;quot;Tx&amp;quot; and not &amp;quot;Rx&amp;quot;, because it indicates the number of times that Bitcoins have been sent to this address, i.e. how often this address has &amp;quot;received&amp;quot; Bitcoins.&lt;br /&gt;
Does this &amp;quot;Tx&amp;quot; come from blockchain/blockexplorer terminology? Or why is it called &amp;quot;Tx&amp;quot; (&amp;quot;transmit&amp;quot;) and not &amp;quot;Rx&amp;quot; (&amp;quot;receive&amp;quot;)? To be clarified.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Contacts&amp;quot; tab (foreign addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of Bitcoin transactions that have ever been carried out from addresses of the current wallet towards this contact address&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Balance&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
The balance column indicates the amount of Bitcoins belonging to the given address.&lt;br /&gt;
The individual balances add up to the total balance of your wallet.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Flag&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
This column indicates certain properties of the different addresses:&lt;br /&gt;
* C = [[#Change Addresses|Change address]] (without a &amp;quot;C&amp;quot; it means it is a [[#Normal Addresses|normal address]])&lt;br /&gt;
* P = Prioritized address&lt;br /&gt;
* F = Frozen address&lt;br /&gt;
* I = [[#Imported Addresses|Imported address]]&lt;br /&gt;
&lt;br /&gt;
Note: P and F flags can be applied to both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses, and also to [[#Imported Addresses|imported addresses]].&lt;br /&gt;
&lt;br /&gt;
===What do colors mean?===&lt;br /&gt;
In the Receive tab:&lt;br /&gt;
*green = prioritized&lt;br /&gt;
*blue = frozen&lt;br /&gt;
In the Contacts tab:&lt;br /&gt;
*gray = alias&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
=== &#039;transaction rejected by memorypool&#039; errors ===&lt;br /&gt;
&lt;br /&gt;
When you send a transaction, there is a delay before the Electrum client displays the transaction in its history.&lt;br /&gt;
This is because the server polls bitcoind&#039;s memorypool every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
If you create another transaction during this interval, during which the first tx is not displayed,&lt;br /&gt;
then your client will pick the same coins again, and the transaction will be rejected as a double spend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://ecdsa.org/electrum Electrum] project website&lt;br /&gt;
* [https://gitorious.org/electrum Electrum] project source (gitorius)&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=50936.msg950497#msg950497 Electrum Forum] - here this documentation was started&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27773</id>
		<title>Electrum/Documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Electrum/Documentation&amp;diff=27773"/>
		<updated>2012-06-12T22:11:08Z</updated>

		<summary type="html">&lt;p&gt;Michael S: /* What does the &amp;quot;Flag&amp;quot; column mean in Electrum? */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation of Electrum Bitcoin Client (Focus on the GUI)==&lt;br /&gt;
This page tries to document certain aspects of the [[Electrum|Electrum]] Bitcoin Client. The focus is on explaining certain aspects of its GUI, such that it gets easier for the user to understand its use.&lt;br /&gt;
&lt;br /&gt;
More documentation, especially with regard to command line parameters, can be found at the parent page of this Wiki, i.e. [[Electrum|here]].&lt;br /&gt;
&lt;br /&gt;
==How to Read this Documentation==&lt;br /&gt;
* Text in curly brackets {like this} means that the author(s) of this documentation are not really sure about this... --&amp;gt; other people are welcome to correct/clarify&lt;br /&gt;
&lt;br /&gt;
==What is a &amp;quot;Wallet&amp;quot; and a &amp;quot;Bitcoin Address&amp;quot;?==&lt;br /&gt;
* (General, not specific to Electrum)&lt;br /&gt;
&lt;br /&gt;
Your wallet is a list of Bitcoin addresses (more precisely: a list of privat/public key pairs). Each address &amp;quot;contains&amp;quot; (or is associated with) a certain amount of Bitcoins at a given time.&lt;br /&gt;
&lt;br /&gt;
Your wallet&#039;s balance is the sum of all Bitcoins of all your wallet&#039;s Bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
Your wallet consists of both [[#Normal Addresses|normal addresses]] and [[#Change Addresses|change addresses]]. Although they are fully equivalent from the Bitcoin protocol&#039;s point of view, they are different in how they are used by Bitcoin clients like Electrum.&lt;br /&gt;
&lt;br /&gt;
===Normal Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====How are New &amp;quot;Normal Addresses&amp;quot; Created for my Wallet?====&lt;br /&gt;
The Bitcoin client (e.g. Electrum) allows you to trigger manually the generation of a new Bitcoin address. You typically want to create a new address when you want to receive Bitcoins from somebody and do not want to use any of the wallet&#039;s present addresses that have already been used for earlier Bitcoin transfers, for privacy reasons (note that all transfers are publically visible in the blockchain).&lt;br /&gt;
&lt;br /&gt;
Another way of adding addresses to your wallet is to [[#Imported Addresses|import]] private keys (with their addresses of course), using Electrum&#039;s [[Electrum|command line options]]. See section about [[#Imported Addresses|imported addresses]] for more details.&lt;br /&gt;
&lt;br /&gt;
===Change Addresses===&lt;br /&gt;
* (More or less general, not too specific to Electrum)&lt;br /&gt;
====What is a &amp;quot;Change Address&amp;quot;, and why is it useful?====&lt;br /&gt;
The concept of change addresses is a feature not of the Bitcoin protocol, but of a Bitcoin client. It is implemented not only in Electrum but in most Bitcoin clients, including the original &amp;quot;Satoshi&amp;quot; Bitcoin client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How it works:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Whenever your Bitcoin client (e.g. Electrum) sends Bitcoins from your wallet&#039;s address &amp;quot;A&amp;quot; to a foreing address &amp;quot;B&amp;quot;, a new change address &amp;quot;C&amp;quot; is created by Electrum and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Example: Address &amp;quot;A&amp;quot; has 20 BTC. Electrum sends 9 BTC from &amp;quot;A&amp;quot; to &amp;quot;B&amp;quot;. The change (20-9 = 11 BTC) is sent to the &amp;quot;change address&amp;quot; &amp;quot;C&amp;quot;. For this purpose, address &amp;quot;C&amp;quot; is created by Electrum at this moment and added to your wallet.&lt;br /&gt;
&lt;br /&gt;
Exception: If all the Bitcoins of &amp;quot;A&amp;quot; are sent to &amp;quot;B&amp;quot;, there is no need for creating a change address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Actually, Bitcoin clients can also work without change addresses. In this case, the change would be sent back to &amp;quot;A&amp;quot; instead of the new address &amp;quot;C&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why the concept of &amp;quot;change addresses&amp;quot; is useful:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Using a new change address makes it more difficult for other people (by analyzing the blockchain) to track how many Bitcoins you have or where you&#039;re spending them.&lt;br /&gt;
* It also conceals which output is the &amp;quot;spend&amp;quot; and which is the &amp;quot;change&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Imported Addresses===&lt;br /&gt;
Instead of generating new addresses in the default way from the wallet&#039;s [[#Seed|seed]], Electrum also allows you to import addresses (and their private keys of course) from external sources, e.g. from another Bitcoin client&#039;s wallet. For this, use Electrum&#039;s [[Electrum|command line]] options. Note that imported addresses cannot be derived from your wallet&#039;s [[#Seed|seed]] and therefore need to be secured separately for a complete backup of your wallet.&lt;br /&gt;
&lt;br /&gt;
Imported addresses can be used like any other [[#Normal Addresses|normal]] receive address with Electrum for transmission or reception of Bitcoins, and can also be (un)tagged as [[#What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?|&amp;quot;prioritized&amp;quot; or &amp;quot;frozen&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
===Deterministic Wallet===&lt;br /&gt;
====What is a &amp;quot;Deterministic Wallet&amp;quot; in Electrum?====&lt;br /&gt;
Traditionally, all new addresses (incl. the private keys of course) added to the wallet ([[#Normal Addresses|normal addresses]] or [[#Change Addresses|change addresses]]) are generated randomly. This is the case e.g. for the original &amp;quot;Satoshi Bitcoin Client&amp;quot; (at least as of today, version 0.6.2).&lt;br /&gt;
&lt;br /&gt;
Contrary to that, a Bitcoin client with a &amp;quot;Deterministic Wallet&amp;quot; will generate all new addresses accoding to a pre-defined (i.e. &amp;quot;deterministic&amp;quot;) algorithm as a function of a wallet-specific [[#Seed|seed]], which is a 128 bit number. This means, if the seed is known, all new addresses that Electrum will ever create for this wallet are known, because Electrum&#039;s algorithm is known (and open source).&lt;br /&gt;
This is a big advantage when it comes to making wallet backups:&lt;br /&gt;
* &#039;&#039;Traditionally&#039;&#039;, a wallet backup just contains the bitcoin addresses (and private keys of course) that have been created by the client by the time the backup was made. If the user performs transactions after the backup, new addresses ([[#Normal Addresses|normal]] or [[#Change Addresses|change]] addresses) will be generated and added to the wallet. These are not included in the backup yet. If the wallet in use gets lost, all the Bitcoins that are associated with the new addresses will also be lost. To avoid the risk of a too high loss, regular wallet backups are important.&lt;br /&gt;
* &#039;&#039;With a Deterministic Wallet&#039;&#039; (like with Electrum), the wallet backup only needs to contain the seed, and all new addresses generated in the future are already secured by the initial backup. Hence, regular new backups are not required!&lt;br /&gt;
&lt;br /&gt;
===Seed===&lt;br /&gt;
====What is the &amp;quot;Seed&amp;quot; of a Deterministic Wallet in Electrum?====&lt;br /&gt;
The Seed of a [[#Deterministic Wallet|deterministic wallet]] is a series of 128 random bits in Electrum.&lt;br /&gt;
For convenience, a seed can also be expressed by a sequence of 12 words in Electrum, and it also supports generation of a QR code to facilitate the backup of the seed.&lt;br /&gt;
&lt;br /&gt;
So there are 2^128 possible seeds for a deterministic wallet in Electrum.&lt;br /&gt;
For comparison, the total number of Bitcoin addresses is 2^160, and the number of atoms on earth is 2^166.&lt;br /&gt;
So there exists one Bitcoin address per 1 Million atoms on earth, and there exists one seed of Electrum wallets per 4.3 Billion Bitcoin addresses.&lt;br /&gt;
(By the way: The number of atoms in the complete universe is estimated as 2^266).&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
Open Point: It is _not clear_ whether the algorithm of deterministic address generation is designed such that for any two seeds &amp;quot;S1&amp;quot; and &amp;quot;S2&amp;quot; (out of the 2^128 possible different seeds) the following condition holds true:&lt;br /&gt;
* If 4.3 Billion (2^32 to be exact) new addresses are calculated from each S1 and from S2, does the algorithm guarantee that there will be no collision between the set of 2^32 addresses from S1 and the set of 2^32 addresses from S2?&lt;br /&gt;
If this condition does not hold true, it needs to be clarified whether the use of deterministic wallets still bares an acceptably low probability of address collisions.&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
===What is the &amp;quot;Gap Limit&amp;quot;?===&lt;br /&gt;
&lt;br /&gt;
The gap limit is the maximal number of contiguous unused addresses in your deterministic sequence of addresses.&lt;br /&gt;
&lt;br /&gt;
If you recover your wallet from seed, you will notice that the gap limit is asked by the recovery dialog.&lt;br /&gt;
It is used in order to decide when to stop the recovery procedure.&lt;br /&gt;
&lt;br /&gt;
If you need to have more receiving addresses in your wallet, you may increase your gap limit (expert mode).&lt;br /&gt;
This, however, means that you will need to remember the new limit in order to be able to recover your wallet from seed.&lt;br /&gt;
&lt;br /&gt;
==More on the Electrum GUI==&lt;br /&gt;
===What does it mean to &amp;quot;Prioritize&amp;quot; or &amp;quot;Freeze&amp;quot; Addresses in Electrum?===&lt;br /&gt;
When sending Bitcoins to a foreign address, Electrum will by default use a built-in method to select the address(es) of the wallet used for sending these Bitcoins.&lt;br /&gt;
&lt;br /&gt;
* When you &#039;&#039;prioritize&#039;&#039; some of your wallet&#039;s addresses, these addresses will be used with preference. Other addresses will not be used until the prioritized addresses contain no more Bitcoins.&lt;br /&gt;
* When you &#039;&#039;freeze&#039;&#039; some of your wallet&#039;s addresses, these addresses will not be used for sending bitcoins. Instead, other addresses will be used. Sending Bitcoins is not possible if the non-frozen addresses of your wallet do not contain enough funds. &lt;br /&gt;
&lt;br /&gt;
The user can (de)prioritize or (un)freeze both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses.&lt;br /&gt;
&lt;br /&gt;
Note: Clearly, an address can not be &amp;quot;prioritized&amp;quot; and &amp;quot;frozen&amp;quot; at the same time.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Tx&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab (own wallet&#039;s addresses) and &amp;quot;Contacts&amp;quot; tab (foreing addresses).&lt;br /&gt;
&lt;br /&gt;
Tx stands for {... ?? &amp;quot;Transaction&amp;quot;? &amp;quot;Transmission&amp;quot; ?? ...}&lt;br /&gt;
&lt;br /&gt;
The Tx column in Electrum displays a number for each Bitcoin address in the address list, both for own addresses (&amp;quot;Receive&amp;quot; tab) and for foreing addresses (&amp;quot;Contacts&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Receive&amp;quot; tab (own addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of _incoming_ Bitcoin transactions that have ever been sent to this address.&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
The number of outgoing transactions is apparently not counted. It is unclear why the column is called &amp;quot;Tx&amp;quot; and not &amp;quot;Rx&amp;quot;, because it indicates the number of times that Bitcoins have been sent to this address, i.e. how often this address has &amp;quot;received&amp;quot; Bitcoins.&lt;br /&gt;
Does this &amp;quot;Tx&amp;quot; come from blockchain/blockexplorer terminology? Or why is it called &amp;quot;Tx&amp;quot; (&amp;quot;transmit&amp;quot;) and not &amp;quot;Rx&amp;quot; (&amp;quot;receive&amp;quot;)? To be clarified.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the &amp;quot;Contacts&amp;quot; tab (foreign addresses):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number in the Tx column indicates the total number of Bitcoin transactions that have ever been received by this address&lt;br /&gt;
{from anyobody? or just from myself, i.e. from addresses in my wallet? - Probably the latter - to be confirmed...}.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Balance&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
The balance column indicates the amount of Bitcoins belonging to the given address.&lt;br /&gt;
The individual balances add up to the total balance of your wallet.&lt;br /&gt;
&lt;br /&gt;
===What does the &amp;quot;Flag&amp;quot; column mean in Electrum?===&lt;br /&gt;
* Applies to &amp;quot;Receive&amp;quot; tab  only (i.e. own wallet&#039;s addresses).&lt;br /&gt;
&lt;br /&gt;
This column indicates certain properties of the different addresses:&lt;br /&gt;
* C = [[#Change Addresses|Change address]] (without a &amp;quot;C&amp;quot; it means it is a [[#Normal Addresses|normal address]])&lt;br /&gt;
* P = Prioritized address&lt;br /&gt;
* F = Frozen address&lt;br /&gt;
* I = [[#Imported Addresses|Imported address]]&lt;br /&gt;
&lt;br /&gt;
Note: P and F flags can be applied to both [[#Normal Addresses|normal]] and [[#Change Addresses|change]] addresses, and also to [[#Imported Addresses|imported addresses]].&lt;br /&gt;
&lt;br /&gt;
===What do colors mean?===&lt;br /&gt;
In the Receive tab:&lt;br /&gt;
*green = prioritized&lt;br /&gt;
*blue = frozen&lt;br /&gt;
In the Contacts tab:&lt;br /&gt;
*gray = alias&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
=== &#039;transaction rejected by memorypool&#039; errors ===&lt;br /&gt;
&lt;br /&gt;
When you send a transaction, there is a delay before the Electrum client displays the transaction in its history.&lt;br /&gt;
This is because the server polls bitcoind&#039;s memorypool every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
If you create another transaction during this interval, during which the first tx is not displayed,&lt;br /&gt;
then your client will pick the same coins again, and the transaction will be rejected as a double spend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://ecdsa.org/electrum Electrum] project website&lt;br /&gt;
* [https://gitorious.org/electrum Electrum] project source (gitorius)&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=50936.msg950497#msg950497 Electrum Forum] - here this documentation was started&lt;/div&gt;</summary>
		<author><name>Michael S</name></author>
	</entry>
</feed>