<?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=Michagogo</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=Michagogo"/>
	<link rel="alternate" type="text/html" href="https://en.bitcoin.it/wiki/Special:Contributions/Michagogo"/>
	<updated>2026-05-02T16:02:07Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Script&amp;diff=44604</id>
		<title>Script</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Script&amp;diff=44604"/>
		<updated>2014-02-24T10:52:25Z</updated>

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

		<summary type="html">&lt;p&gt;Michagogo: /* Relaying */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:fee.png|thumb|Receiving the fees from hundreds of transactions (0.44 BTC)]]&lt;br /&gt;
&#039;&#039;&#039;Transaction fees&#039;&#039;&#039; may be included with any transfer of bitcoins from one address to another.  At the moment, many [[transactions]] are typically processed in a way where no fee is expected at all, but for transactions which draw coins from many bitcoin addresses and therefore have a large data size, a small transaction fee is usually expected.&lt;br /&gt;
&lt;br /&gt;
The transaction fee is processed by and received by the bitcoin miner.  When a new bitcoin block is generated with a successful hash, the information for all of the transactions is included with the block and all transaction fees are collected by that user creating the block, who is free to assign those fees to himself.&lt;br /&gt;
&lt;br /&gt;
Transaction fees are voluntary on the part of the person making the bitcoin transaction, as the person attempting to make a transaction can include any fee or none at all in the transaction. On the other hand, nobody mining new bitcoins necessarily needs to accept the transactions and include them in the new block being created.  The transaction fee is therefore an incentive on the part of the bitcoin user to make sure that a particular transaction will get included into the next block which is generated.&lt;br /&gt;
&lt;br /&gt;
It is envisioned that over time the cumulative effect of collecting transaction fees will allow somebody creating new blocks to &amp;quot;earn&amp;quot; more bitcoins than will be mined from new bitcoins created by the new block itself.  This is also an incentive to keep trying to create new blocks even if the value of the newly created block from the mining activity is zero in the far future.&lt;br /&gt;
&lt;br /&gt;
==Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
The following sections describe the behavior of the [[Original Bitcoin client|reference implementation]] as of version 0.8.6. Earlier versions treated fees differently, as do other popular implementations (including possible later versions).&lt;br /&gt;
&lt;br /&gt;
===Sending===&lt;br /&gt;
&lt;br /&gt;
A transaction may be safely sent without fees if these conditions are met:&lt;br /&gt;
&lt;br /&gt;
* It is smaller than 1,000 bytes.&lt;br /&gt;
* All outputs are 0.01 BTC or larger.&lt;br /&gt;
* Its priority is large enough (see the Technical Info section below)&lt;br /&gt;
&lt;br /&gt;
Otherwise, the reference implementation will round up the transaction size to the next thousand bytes and add a fee of 0.1 mBTC (0.0001 BTC) per thousand bytes&amp;lt;ref&amp;gt;[http://bitcointalk.org/index.php?topic=219504.0 Default fee dropped in v0.8.2]&amp;lt;/ref&amp;gt;. As an example, a fee of 0.1 mBTC (0.0001 BTC) would be added to a 746 byte transaction, and a fee of 0.2 mBTC (0.0002 BTC) would be added to a 1001 byte transaction.&lt;br /&gt;
Users may increase the default 0.0001 BTC/kB fee setting, but cannot control transaction fees for each transaction. Bitcoin-Qt does prompt the user to accept the fee before the transaction is sent (they may cancel the transaction if they are not willing to pay the fee).&lt;br /&gt;
&lt;br /&gt;
Note that a typical transaction is 500 bytes, so the typical transaction fee for low-priority transactions is 0.1 mBTC (0.0001 BTC), regardless of the number of bitcoins sent.&lt;br /&gt;
&lt;br /&gt;
===Including in Blocks===&lt;br /&gt;
&lt;br /&gt;
This section describes how the reference implementation selects which transactions to put into new blocks, with default settings. All of the settings may be changed if a miner wants to create larger or smaller blocks containing more or fewer free transactions.&lt;br /&gt;
&lt;br /&gt;
30,000 bytes in the block are set aside for the highest-priority transactions, regardless of transaction fee. Transactions are added highest-priority-first to this section of the block.&lt;br /&gt;
&lt;br /&gt;
Then transactions that pay a fee of at least 0.0001 BTC/kb are added to the block, highest-fee transactions first, until the block is not more than 300,000 bytes big.&lt;br /&gt;
&lt;br /&gt;
The remaining transactions remain in the miner&#039;s &amp;quot;memory pool&amp;quot;, and may be included in later blocks if their priority or fee is large enough.&lt;br /&gt;
&lt;br /&gt;
===Relaying===&lt;br /&gt;
&lt;br /&gt;
The reference implementation&#039;s rules for relaying transactions across the peer-to-peer network are very similar to the rules for sending transactions, as a value of 0.0001 BTC is used to determine whether or not a transaction is considered &amp;quot;Free&amp;quot;. However, the rule that all outputs must be 0.01 BTC or larger does not apply. To prevent &amp;quot;penny-flooding&amp;quot; denial-of-service attacks on the network, the reference implementation caps the number of free transactions it will relay to other nodes to (by default) 15 thousand bytes per minute.&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Setting !! Default Value (units)&lt;br /&gt;
|-&lt;br /&gt;
| paytxfee || 0.0000 (BTC)&lt;br /&gt;
|-&lt;br /&gt;
| limitfreerelay || 15 (thousand bytes per minute)&lt;br /&gt;
|-&lt;br /&gt;
| mintxfee || 0.0001 (BTC)&lt;br /&gt;
|-&lt;br /&gt;
| blockmaxsize || 300000 (bytes)&lt;br /&gt;
|-&lt;br /&gt;
| blockminsize || 0 (bytes)&lt;br /&gt;
|-&lt;br /&gt;
| blockprioritysize || 30000 (bytes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Technical info==&lt;br /&gt;
&lt;br /&gt;
Transaction priority is calculated as a value-weighted sum of input age, divided by transaction size in bytes:&lt;br /&gt;
 priority = sum(input_value_in_base_units * input_age)/size_in_bytes&lt;br /&gt;
Transactions need to have a priority above 57,600,000 to avoid the enforced limit (as of client version 0.3.21).  This threshold is written in the code as COIN * 144 / 250, suggesting that the threshold represents a one day old, 1 btc coin (144 is the expected number of blocks per day) and a transaction size of 250 bytes.&lt;br /&gt;
&lt;br /&gt;
So, for example, a transaction that has 2 inputs, one of 5 btc with 10 confirmations, and one of 2 btc with 3 confirmations, and has a size of 500bytes, will have a priority of&lt;br /&gt;
 (500000000 * 10 + 200000000 * 3) / 500 = 11,200,000&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Free transaction relay policy]]&lt;br /&gt;
* [http://blockchain.info/charts/transaction-fees Transaction fee chart]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Vocabulary]]&lt;br /&gt;
[[Category:Mining]]&lt;br /&gt;
[[de:Transaktionsgebühren]]&lt;/div&gt;</summary>
		<author><name>Michagogo</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Miner_fees&amp;diff=44164</id>
		<title>Miner fees</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Miner_fees&amp;diff=44164"/>
		<updated>2014-01-30T23:11:15Z</updated>

		<summary type="html">&lt;p&gt;Michagogo: /* Reference Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:fee.png|thumb|Receiving the fees from hundreds of transactions (0.44 BTC)]]&lt;br /&gt;
&#039;&#039;&#039;Transaction fees&#039;&#039;&#039; may be included with any transfer of bitcoins from one address to another.  At the moment, many [[transactions]] are typically processed in a way where no fee is expected at all, but for transactions which draw coins from many bitcoin addresses and therefore have a large data size, a small transaction fee is usually expected.&lt;br /&gt;
&lt;br /&gt;
The transaction fee is processed by and received by the bitcoin miner.  When a new bitcoin block is generated with a successful hash, the information for all of the transactions is included with the block and all transaction fees are collected by that user creating the block, who is free to assign those fees to himself.&lt;br /&gt;
&lt;br /&gt;
Transaction fees are voluntary on the part of the person making the bitcoin transaction, as the person attempting to make a transaction can include any fee or none at all in the transaction. On the other hand, nobody mining new bitcoins necessarily needs to accept the transactions and include them in the new block being created.  The transaction fee is therefore an incentive on the part of the bitcoin user to make sure that a particular transaction will get included into the next block which is generated.&lt;br /&gt;
&lt;br /&gt;
It is envisioned that over time the cumulative effect of collecting transaction fees will allow somebody creating new blocks to &amp;quot;earn&amp;quot; more bitcoins than will be mined from new bitcoins created by the new block itself.  This is also an incentive to keep trying to create new blocks even if the value of the newly created block from the mining activity is zero in the far future.&lt;br /&gt;
&lt;br /&gt;
==Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
The following sections describe the behavior of the [[Original Bitcoin client|reference implementation]] as of version 0.8.6. Earlier versions treated fees differently, as do other popular implementations (including possible later versions).&lt;br /&gt;
&lt;br /&gt;
===Sending===&lt;br /&gt;
&lt;br /&gt;
A transaction may be safely sent without fees if these conditions are met:&lt;br /&gt;
&lt;br /&gt;
* It is smaller than 1,000 bytes.&lt;br /&gt;
* All outputs are 0.01 BTC or larger.&lt;br /&gt;
* Its priority is large enough (see the Technical Info section below)&lt;br /&gt;
&lt;br /&gt;
Otherwise, the reference implementation will round up the transaction size to the next thousand bytes and add a fee of 0.1 mBTC (0.0001 BTC) per thousand bytes&amp;lt;ref&amp;gt;[http://bitcointalk.org/index.php?topic=219504.0 Default fee dropped in v0.8.2]&amp;lt;/ref&amp;gt;. As an example, a fee of 0.1 mBTC (0.0001 BTC) would be added to a 746 byte transaction, and a fee of 0.2 mBTC (0.0002 BTC) would be added to a 1001 byte transaction.&lt;br /&gt;
Users may increase the default 0.0001 BTC/kB fee setting, but cannot control transaction fees for each transaction. Bitcoin-Qt does prompt the user to accept the fee before the transaction is sent (they may cancel the transaction if they are not willing to pay the fee).&lt;br /&gt;
&lt;br /&gt;
Note that a typical transaction is 500 bytes, so the typical transaction fee for low-priority transactions is 0.1 mBTC (0.0001 BTC), regardless of the number of bitcoins sent.&lt;br /&gt;
&lt;br /&gt;
===Including in Blocks===&lt;br /&gt;
&lt;br /&gt;
This section describes how the reference implementation selects which transactions to put into new blocks, with default settings. All of the settings may be changed if a miner wants to create larger or smaller blocks containing more or fewer free transactions.&lt;br /&gt;
&lt;br /&gt;
30,000 bytes in the block are set aside for the highest-priority transactions, regardless of transaction fee. Transactions are added highest-priority-first to this section of the block.&lt;br /&gt;
&lt;br /&gt;
Then transactions that pay a fee of at least 0.0001 BTC/kb are added to the block, highest-fee transactions first, until the block is not more than 300,000 bytes big.&lt;br /&gt;
&lt;br /&gt;
The remaining transactions remain in the miner&#039;s &amp;quot;memory pool&amp;quot;, and may be included in later blocks if their priority or fee is large enough.&lt;br /&gt;
&lt;br /&gt;
===Relaying===&lt;br /&gt;
&lt;br /&gt;
The reference implementation&#039;s rules for relaying transactions across the peer-to-peer network are very similar to the rules for sending transactions, as a value of 0.0001 BTC is used to determine whether or not a transaction is considered &amp;quot;Free&amp;quot;. To prevent &amp;quot;penny-flooding&amp;quot; denial-of-service attacks on the network, the reference implementation caps the number of free transactions it will relay to other nodes to (by default) 15 thousand bytes per minute.&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Setting !! Default Value (units)&lt;br /&gt;
|-&lt;br /&gt;
| paytxfee || 0.0000 (BTC)&lt;br /&gt;
|-&lt;br /&gt;
| limitfreerelay || 15 (thousand bytes per minute)&lt;br /&gt;
|-&lt;br /&gt;
| mintxfee || 0.0001 (BTC)&lt;br /&gt;
|-&lt;br /&gt;
| blockmaxsize || 300000 (bytes)&lt;br /&gt;
|-&lt;br /&gt;
| blockminsize || 0 (bytes)&lt;br /&gt;
|-&lt;br /&gt;
| blockprioritysize || 30000 (bytes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Technical info==&lt;br /&gt;
&lt;br /&gt;
Transaction priority is calculated as a value-weighted sum of input age, divided by transaction size in bytes:&lt;br /&gt;
 priority = sum(input_value_in_base_units * input_age)/size_in_bytes&lt;br /&gt;
Transactions need to have a priority above 57,600,000 to avoid the enforced limit (as of client version 0.3.21).  This threshold is written in the code as COIN * 144 / 250, suggesting that the threshold represents a one day old, 1 btc coin (144 is the expected number of blocks per day) and a transaction size of 250 bytes.&lt;br /&gt;
&lt;br /&gt;
So, for example, a transaction that has 2 inputs, one of 5 btc with 10 confirmations, and one of 2 btc with 3 confirmations, and has a size of 500bytes, will have a priority of&lt;br /&gt;
 (500000000 * 10 + 200000000 * 3) / 500 = 11,200,000&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Free transaction relay policy]]&lt;br /&gt;
* [http://blockchain.info/charts/transaction-fees Transaction fee chart]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Vocabulary]]&lt;br /&gt;
[[Category:Mining]]&lt;br /&gt;
[[de:Transaktionsgebühren]]&lt;/div&gt;</summary>
		<author><name>Michagogo</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Miner_fees&amp;diff=44163</id>
		<title>Miner fees</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Miner_fees&amp;diff=44163"/>
		<updated>2014-01-30T23:03:02Z</updated>

		<summary type="html">&lt;p&gt;Michagogo: /* Reference Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:fee.png|thumb|Receiving the fees from hundreds of transactions (0.44 BTC)]]&lt;br /&gt;
&#039;&#039;&#039;Transaction fees&#039;&#039;&#039; may be included with any transfer of bitcoins from one address to another.  At the moment, many [[transactions]] are typically processed in a way where no fee is expected at all, but for transactions which draw coins from many bitcoin addresses and therefore have a large data size, a small transaction fee is usually expected.&lt;br /&gt;
&lt;br /&gt;
The transaction fee is processed by and received by the bitcoin miner.  When a new bitcoin block is generated with a successful hash, the information for all of the transactions is included with the block and all transaction fees are collected by that user creating the block, who is free to assign those fees to himself.&lt;br /&gt;
&lt;br /&gt;
Transaction fees are voluntary on the part of the person making the bitcoin transaction, as the person attempting to make a transaction can include any fee or none at all in the transaction. On the other hand, nobody mining new bitcoins necessarily needs to accept the transactions and include them in the new block being created.  The transaction fee is therefore an incentive on the part of the bitcoin user to make sure that a particular transaction will get included into the next block which is generated.&lt;br /&gt;
&lt;br /&gt;
It is envisioned that over time the cumulative effect of collecting transaction fees will allow somebody creating new blocks to &amp;quot;earn&amp;quot; more bitcoins than will be mined from new bitcoins created by the new block itself.  This is also an incentive to keep trying to create new blocks even if the value of the newly created block from the mining activity is zero in the far future.&lt;br /&gt;
&lt;br /&gt;
==Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
The following sections describe the behavior of the [[Original Bitcoin client|reference implementation]] as of version 0.8.6. Earlier versions treated fees differently, as do other popular implementations.&lt;br /&gt;
&lt;br /&gt;
===Sending===&lt;br /&gt;
&lt;br /&gt;
A transaction may be safely sent without fees if these conditions are met:&lt;br /&gt;
&lt;br /&gt;
* It is smaller than 1,000 bytes.&lt;br /&gt;
* All outputs are 0.01 BTC or larger.&lt;br /&gt;
* Its priority is large enough (see the Technical Info section below)&lt;br /&gt;
&lt;br /&gt;
Otherwise, the reference implementation will round up the transaction size to the next thousand bytes and add a fee of 0.1 mBTC (0.0001 BTC) per thousand bytes&amp;lt;ref&amp;gt;[http://bitcointalk.org/index.php?topic=219504.0 Default fee dropped in v0.8.2]&amp;lt;/ref&amp;gt;. As an example, a fee of 0.1 mBTC (0.0001 BTC) would be added to a 746 byte transaction, and a fee of 0.2 mBTC (0.0002 BTC) would be added to a 1001 byte transaction.&lt;br /&gt;
Users may increase the default 0.0001 BTC/kB fee setting, but cannot control transaction fees for each transaction. Bitcoin-Qt does prompt the user to accept the fee before the transaction is sent (they may cancel the transaction if they are not willing to pay the fee).&lt;br /&gt;
&lt;br /&gt;
Note that a typical transaction is 500 bytes, so the typical transaction fee for low-priority transactions is 0.1 mBTC (0.0001 BTC), regardless of the number of bitcoins sent.&lt;br /&gt;
&lt;br /&gt;
===Including in Blocks===&lt;br /&gt;
&lt;br /&gt;
This section describes how the reference implementation selects which transactions to put into new blocks, with default settings. All of the settings may be changed if a miner wants to create larger or smaller blocks containing more or fewer free transactions.&lt;br /&gt;
&lt;br /&gt;
30,000 bytes in the block are set aside for the highest-priority transactions, regardless of transaction fee. Transactions are added highest-priority-first to this section of the block.&lt;br /&gt;
&lt;br /&gt;
Then transactions that pay a fee of at least 0.0001 BTC/kb are added to the block, highest-fee transactions first, until the block is not more than 300,000 bytes big.&lt;br /&gt;
&lt;br /&gt;
The remaining transactions remain in the miner&#039;s &amp;quot;memory pool&amp;quot;, and may be included in later blocks if their priority or fee is large enough.&lt;br /&gt;
&lt;br /&gt;
===Relaying===&lt;br /&gt;
&lt;br /&gt;
The reference implementation&#039;s rules for relaying transactions across the peer-to-peer network are very similar to the rules for sending transactions, as a value of 0.0001 BTC is used to determine whether or not a transaction is considered &amp;quot;Free&amp;quot;. To prevent &amp;quot;penny-flooding&amp;quot; denial-of-service attacks on the network, the reference implementation caps the number of free transactions it will relay to other nodes to (by default) 15 thousand bytes per minute.&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Setting !! Default Value (units)&lt;br /&gt;
|-&lt;br /&gt;
| paytxfee || 0.0000 (BTC)&lt;br /&gt;
|-&lt;br /&gt;
| limitfreerelay || 15 (thousand bytes per minute)&lt;br /&gt;
|-&lt;br /&gt;
| mintxfee || 0.0001 (BTC)&lt;br /&gt;
|-&lt;br /&gt;
| blockmaxsize || 300000 (bytes)&lt;br /&gt;
|-&lt;br /&gt;
| blockminsize || 0 (bytes)&lt;br /&gt;
|-&lt;br /&gt;
| blockprioritysize || 30000 (bytes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Technical info==&lt;br /&gt;
&lt;br /&gt;
Transaction priority is calculated as a value-weighted sum of input age, divided by transaction size in bytes:&lt;br /&gt;
 priority = sum(input_value_in_base_units * input_age)/size_in_bytes&lt;br /&gt;
Transactions need to have a priority above 57,600,000 to avoid the enforced limit (as of client version 0.3.21).  This threshold is written in the code as COIN * 144 / 250, suggesting that the threshold represents a one day old, 1 btc coin (144 is the expected number of blocks per day) and a transaction size of 250 bytes.&lt;br /&gt;
&lt;br /&gt;
So, for example, a transaction that has 2 inputs, one of 5 btc with 10 confirmations, and one of 2 btc with 3 confirmations, and has a size of 500bytes, will have a priority of&lt;br /&gt;
 (500000000 * 10 + 200000000 * 3) / 500 = 11,200,000&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Free transaction relay policy]]&lt;br /&gt;
* [http://blockchain.info/charts/transaction-fees Transaction fee chart]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Vocabulary]]&lt;br /&gt;
[[Category:Mining]]&lt;br /&gt;
[[de:Transaktionsgebühren]]&lt;/div&gt;</summary>
		<author><name>Michagogo</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=P2SH&amp;diff=41781</id>
		<title>P2SH</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=P2SH&amp;diff=41781"/>
		<updated>2013-10-15T22:31:40Z</updated>

		<summary type="html">&lt;p&gt;Michagogo: Redirected page to BIP 0016&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[BIP_0016]]&lt;/div&gt;</summary>
		<author><name>Michagogo</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Eligius&amp;diff=41280</id>
		<title>Eligius</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Eligius&amp;diff=41280"/>
		<updated>2013-09-24T19:25:25Z</updated>

		<summary type="html">&lt;p&gt;Michagogo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Eligius&#039;&#039;&#039;, also sometimes referred to as Éloi or &amp;quot;[[Luke Dashjr|Luke-Jr&#039;s]] pool&amp;quot;, is a [[Pooled mining|mining pool]].&lt;br /&gt;
As of October 23, 2012, Eligius is maintained by [[User:Wizkid057|wizkid057]]. &amp;lt;ref&amp;gt;https://bitcointalk.org/index.php?topic=23768.msg1291494#msg1291494&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To use it, a miner merely needs to be directed to mining.eligius.st on port 8337, with the username set to a valid bitcoin address (which receives the payout). &#039;&#039;&#039;No registration is needed.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Donation address: 1E1igiusfEjs1pCaGjEERExE9gYcrFwow7 / Mx5FUQn8oBCoRdyBTUFu9JW5SsdEku56PP&lt;br /&gt;
&lt;br /&gt;
Basic concepts:&lt;br /&gt;
* Pool keeps all transaction fees to itself.&lt;br /&gt;
* The pool charges no fees and shares are managed under the [http://eligius.st/wiki/index.php/Capped_PPS#CPPS_with_Recent_Backpay_.28CPPSRB.29 CPPSRB] reward system at 100% value at the time of mining. &amp;lt;ref&amp;gt;http://eligius.st/wiki/index.php/Capped_PPS#CPPS_with_Recent_Backpay_.28CPPSRB.29&amp;lt;/ref&amp;gt;&lt;br /&gt;
* When a block is found, all miners who have reached the minimum payout threshold (currently about 0.17 BTC) are paid via the Generation transaction.&lt;br /&gt;
* The pool almost never has miner&#039;s funds, as they are paid directly to the miners from the block reward.&lt;br /&gt;
* If a block is orphaned, its shares become part of the next block&#039;s reward distribution.&lt;br /&gt;
* No registration. Just send username with the address you want payouts to (password can be anything).&lt;br /&gt;
&lt;br /&gt;
Eligius was announced on April 27, 2011&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=6648.0 Please test: New Experimental Pool]&amp;lt;/ref&amp;gt;.  At the time the service was operated without a name, paying out even tiny coins immediately.&lt;br /&gt;
&lt;br /&gt;
==Connecting to Eligius==&lt;br /&gt;
* GBT&lt;br /&gt;
: gbt.mining.eligius.st:9337&lt;br /&gt;
* Stratum&lt;br /&gt;
: stratum+tcp://stratum.mining.eligius.st:3334&lt;br /&gt;
* Getwork&lt;br /&gt;
: getwork.mining.eligius.st:8337&lt;br /&gt;
&lt;br /&gt;
==Eligius-related links==&lt;br /&gt;
&lt;br /&gt;
* [http://eligius.st Main webpage]&lt;br /&gt;
* [http://eligius.st/~wizkid057/newstats/ Pool statistics (hashrate, found blocks, per-address balance stats)]&lt;br /&gt;
* [http://eligius.st/~luke-jr/raw/combined/hashrate.txt Total pool hashrate (EU + US, estimate)]&lt;br /&gt;
* [http://eligius.st/~luke-jr/raw/ JSON API]&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Comparison of mining pools]]&lt;br /&gt;
* [[Pooled mining]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Pool Operators]]&lt;/div&gt;</summary>
		<author><name>Michagogo</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Mining&amp;diff=40271</id>
		<title>Mining</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Mining&amp;diff=40271"/>
		<updated>2013-08-18T19:48:08Z</updated>

		<summary type="html">&lt;p&gt;Michagogo: /* CPU Mining */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- This page is designed to be short and simple! It should provide only a very brief explanation of things that have their own page and should link to other pages whenever possible. This page should serve as an entry point and a place to organize most of our mining articles. Thank You! (-Atheros) --&amp;gt;&lt;br /&gt;
[[File:Quick-and-dirty-4x5970-cooling.jpg|thumb|right|A quick and dirty mining rig]]&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&#039;&#039;&#039;Mining&#039;&#039;&#039;, or generating, is the process of adding transaction records to Bitcoin&#039;s public ledger of past transactions. This ledger of past transactions is called the [[block chain]] as it is a chain of [[block|blocks]]. The block chain serves to [[Confirmation|confirm]] transactions to the rest of the network as having taken place. Bitcoin nodes use the block chain to distinguish legitimate Bitcoin transactions from attempts to respend coins that have already been spent elsewhere.&lt;br /&gt;
&lt;br /&gt;
Mining is intentionally designed to be resource-intensive and difficult so that the number of blocks found each day by miners remains steady. Individual [[blocks]] must contain a [[proof of work|proof of work]] to be considered valid. This proof of work is verified by other Bitcoin nodes each time they receive a block. &lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
Bitcoin&#039;s public ledger (the &#039;block chain&#039;) was started on January 3rd, 2009 at 18:15 UTC presumably by [[Satoshi Nakamoto]]. The first block is known as the [[genesis block]]. The first transaction recorded in the first block was a single transaction paying the reward of 50 new bitcoins to its creator.&lt;br /&gt;
&lt;br /&gt;
Bitcoin mining is so called because it resembles the mining of other commodities: it requires exertion and it slowly makes new currency available at a rate that resembles the rate at which commodities like gold are mined from the ground. See [[Controlled Currency Supply]]. &lt;br /&gt;
&lt;br /&gt;
== Mining contracts ==&lt;br /&gt;
Provides mining services with performance specified by contract. An example would be where a specific level of mining capacity is rented out for a set price for a specific duration. One of the biggest mining contractors is [[Minerlease]]&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
=== The Computationally-Difficult Problem ===&lt;br /&gt;
Mining a block is difficult because the SHA-256 hash of a block&#039;s header must be lower than or equal to the [[Target|target]] in order for the block to be accepted by the network. This problem can be simplified for explanation purposes: The hash of a block must start with a certain number of zeros. The probability of calculating a hash that starts with many zeros is very low, therefore many attempts must be made. In order to generate a new hash each round, a [[Nonce|nonce]] is incremented. See [[Proof of work]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== The Difficulty Metric ===&lt;br /&gt;
The [[Difficulty|difficulty]] is the measure of how difficult it is to find a new block compared to the easiest it can ever be. It is recalculated every 2016 blocks to a value such that the previous 2016 blocks would have been generated in exactly two weeks had everyone been mining at this difficulty. This will yield, on average, one block every ten minutes. As more miners join, the rate of block creation will go up. As the rate of block generation goes up, the difficulty rises to compensate which will push the rate of block creation back down. Any blocks released by malicious miners that do not meet the required difficulty [[Target|target]] will simply be rejected by everyone on the network and thus will be worthless. &lt;br /&gt;
&lt;br /&gt;
=== Reward ===&lt;br /&gt;
When a block is discovered, the discoverer may award themselves a certain number of bitcoins, which is agreed-upon by everyone in the network. Currently this bounty is 25 bitcoins; this value will halve every 210,000 blocks. See [[Controlled Currency Supply]].&lt;br /&gt;
&lt;br /&gt;
Additionally, the miner is awarded the fees paid by users sending transactions. The fee is an incentive for the miner to include the transaction in their block. In the future, as the number of new bitcoins miners are allowed to create in each block dwindles, the fees will make up a much more important percentage of mining income.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
[[File:Usb-fpga module 1.15x-hs-800.jpg|thumb|right|FPGA Module]]&lt;br /&gt;
Users have used various types of hardware over time to mine blocks. Hardware specifications and performance statistics are detailed on the [[Mining Hardware Comparison]] page.&lt;br /&gt;
=== CPU Mining === &lt;br /&gt;
Early Bitcoin client versions allowed users to use their CPUs to mine. The advent of GPU mining made CPU mining financially unwise. The option still exists in the reference Bitcoin client, but it is disabled by default.&lt;br /&gt;
&lt;br /&gt;
=== GPU Mining ===&lt;br /&gt;
GPU Mining is drastically faster and more efficient than CPU mining. See the main article: [[Why a GPU mines faster than a CPU]]. A variety of popular [[Mining rig|mining rigs]] have been documented.&lt;br /&gt;
=== FPGA Mining ===&lt;br /&gt;
FPGA mining is a very efficient and fast way to mine, comparable to GPU mining and drastically outperforming CPU mining. FPGAs typically consume very small amounts of power with relatively high hash ratings, making them more viable and efficient than GPU mining. See [[Mining Hardware Comparison]] for FPGA hardware specifications and statistics.&lt;br /&gt;
=== ASIC Mining ===&lt;br /&gt;
An application-specific integrated circuit, or &#039;&#039;ASIC&#039;&#039;, is a microchip designed and manufactured for a very specific purpose. ASICs designed for Bitcoin mining were first released in 2013 and (at the time of this writing) are in the hands of a very limited number of miners. For the amount of power they consume, they are vastly faster than all previous technologies and already has made GPU mining financially unwise in some countries and setups.&lt;br /&gt;
&lt;br /&gt;
== Pools ==&lt;br /&gt;
As mining a block became more and more difficult, individuals found that they were working for months without finding a block and receiving &#039;&#039;any&#039;&#039; reward for their mining efforts. Thus they started organizing themselves into [[Pooled mining|pools]] so that they could share rewards more evenly. See [[Pooled mining]] and [[Comparison of mining pools]].&lt;br /&gt;
[[Category:Mining]][[Category:Vocabulary]]&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [http://codinginmysleep.com/bitcoin-mining-in-plain-english Bitcoin Mining in Plain English] by David Perry&lt;br /&gt;
* [[Automatically mine when computer is locked|Tutorial to automatically start mining when you lock your computer]]. (Windows 7)&lt;br /&gt;
* [http://www.reddit.com/r/Bitcoin/comments/18q2jx/eli5_bitcoin_mining_xpost_in_eli5/ Simplified Explanation of Bitcoin Mining] by reddit user [http://www.reddit.com/user/azotic azotic]&lt;/div&gt;</summary>
		<author><name>Michagogo</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Satoshi_Client_Node_Discovery&amp;diff=39071</id>
		<title>Satoshi Client Node Discovery</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Satoshi_Client_Node_Discovery&amp;diff=39071"/>
		<updated>2013-07-03T21:54:29Z</updated>

		<summary type="html">&lt;p&gt;Michagogo: Modernized somewhat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
The Satoshi client discovers the IP address and port of nodes in several different ways.&lt;br /&gt;
&lt;br /&gt;
# Nodes discover their own external address by various methods.&lt;br /&gt;
# Nodes receive the callback address of remote nodes that connect to them.&lt;br /&gt;
# Nodes makes DNS request to receive IP addresses.&lt;br /&gt;
# Nodes can use addresses hard coded into the software.&lt;br /&gt;
# Nodes exchange addresses with other nodes.&lt;br /&gt;
# Nodes store addresses in a database and read that database on startup.&lt;br /&gt;
# Nodes can be provided addresses as command line arguments&lt;br /&gt;
# Nodes read addresses from a user provided text file on startup&lt;br /&gt;
&lt;br /&gt;
A timestamp is kept for each address to keep track of when the node&lt;br /&gt;
address was last seen. The AddressCurrentlyConnected in [https://github.com/bitcoin/bitcoin/blob/master/src/net.cpp net.cpp] handles&lt;br /&gt;
updating the timestamp whenever a message is received from a node.&lt;br /&gt;
Timestamps are only updated on an address and saved to the database&lt;br /&gt;
when the timestamp is over 20 minutes old.&lt;br /&gt;
&lt;br /&gt;
See the Node Connectivity article for information on which type of&lt;br /&gt;
addresses take precedence when actually connecting to nodes.&lt;br /&gt;
&lt;br /&gt;
In the first section we will cover how a node handles a request for&lt;br /&gt;
addresses via the &amp;quot;getaddr&amp;quot; message. By understanding the role of&lt;br /&gt;
timestamps, it will become more clear why timestamps are kept the way&lt;br /&gt;
they are for each of the different ways an address is discovered.&lt;br /&gt;
&lt;br /&gt;
==Handling Message &amp;quot;getaddr&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
When a node receives a &amp;quot;getaddr&amp;quot; request, it first figures out how many&lt;br /&gt;
addresses it has that have a timestamp in the last 3 hours.&lt;br /&gt;
Then it sends those addresses, but if there are more than 2500 addresses&lt;br /&gt;
seen in the last 3 hours, it selects around 2500 out of the available&lt;br /&gt;
recent addresses by using random selection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now lets look at the ways a node finds out about node addresses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Discovery Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Local Client&#039;s External Address===&lt;br /&gt;
The client uses public web services which return the information to determine its own external, routable IP address.&lt;br /&gt;
&lt;br /&gt;
The client runs a thread called ThreadGetMyExternalIP (in [https://github.com/bitcoin/bitcoin/blob/master/src/net.cpp net.cpp])&lt;br /&gt;
which attempts to determine the client&#039;s IP address as seen from the outside&lt;br /&gt;
world.&lt;br /&gt;
&lt;br /&gt;
First, it attempts to connect to 91.198.22.70 port 80, which should be&lt;br /&gt;
the checkip.dyndns.org server. If connection fails, a DNS request is made&lt;br /&gt;
for checkip.dyndns.org and a connection is attempted to that address.&lt;br /&gt;
Next, it attempts to connect to 74.208.43.192 port 80, which should be&lt;br /&gt;
the www.showmyip.com server. If connection fails, a DNS request is made&lt;br /&gt;
for www.showmyip.com and a connection is attempted to that address.&lt;br /&gt;
&lt;br /&gt;
For each address attempted above, the client attempts to connect,&lt;br /&gt;
send a HTTP request, read the appropriate response line, and parse the&lt;br /&gt;
IP address from it.&lt;br /&gt;
If this succeeds, the IP address is returned, it is advertised to any connected&lt;br /&gt;
nodes, and then the thread finishes (without proceeding to the next&lt;br /&gt;
address).&lt;br /&gt;
&lt;br /&gt;
===Connect Callback Address===&lt;br /&gt;
When a node receives an initial &amp;quot;version&amp;quot; message, and that node initiated the connection, then the node advertises its address to the remote so that it can connect back to the local node if it wants to.&lt;br /&gt;
&lt;br /&gt;
After sending its own address, it sends a &amp;quot;getaddr&amp;quot; request message to the remote node to learn about more addresses, if the remote node version is recent or if the local node does not yet have 1000 addresses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===IRC Addresses===&lt;br /&gt;
&lt;br /&gt;
As of version 0.6.x the Bitcoin client no longer uses IRC bootstrapping by default, and as of version 0.8.2 support for IRC bootstrapping has been removed completely.  This documentation below is accurate for most prior versions.&lt;br /&gt;
&lt;br /&gt;
In addition to learning and sharing its own address, the node learned about other node addresses via an IRC channel. See [https://github.com/bitcoin/bitcoin/blob/847593228de8634bf6ef5933a474c7e63be59146/src/irc.cpp irc.cpp].&lt;br /&gt;
&lt;br /&gt;
After learning its own address, a node encoded its own address into a string to be used as a nickname. Then, it randomly joined an IRC channel named between #bitcoin00 and #bitcoin99. Then it issued a WHO command. The thread read the lines as they appeared in the channel and decoded the IP addresses of other nodes in the channel. It did this in a loop, forever, until the node was shutdown.&lt;br /&gt;
&lt;br /&gt;
When the client discovered an address from IRC, it set the timestamp on the address to the current time, but it used a &amp;quot;penalty&amp;quot; of 51 minutes, which means it looked like it was actually seen almost an hour earlier.&lt;br /&gt;
&lt;br /&gt;
===DNS Addresses===&lt;br /&gt;
Upon startup, if peer node discovery is needed, the client then issues DNS requests to learn about the addresses of other peer nodes.  The client includes a list of host names for DNS services that are seeded.  As-of May 17, 2012 the list (from chainparams.cpp&amp;lt;ref&amp;gt;[https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp#L139 bitcoin/src/chainparams.cpp at master]&amp;lt;/ref&amp;gt;) includes:&lt;br /&gt;
&lt;br /&gt;
* bitseed.xf2.org&lt;br /&gt;
* dnsseed.bluematt.me&lt;br /&gt;
* seed.bitcoin.sipa.be&lt;br /&gt;
* dnsseed.bitcoin.dashjr.org&lt;br /&gt;
&lt;br /&gt;
A DNS reply can contain multiple IP addresses for a requested name.&lt;br /&gt;
&lt;br /&gt;
Addresses discovered via DNS are initially given a zero timestamp, therefore they are not advertised in response to a &amp;quot;getaddr&amp;quot; request.&lt;br /&gt;
&lt;br /&gt;
===Hard Coded &amp;quot;Seed&amp;quot; Addresses===&lt;br /&gt;
The client contains hard coded IP addresses that represent bitcoin nodes.&lt;br /&gt;
&lt;br /&gt;
These addresses are only used as a last resort, if no other method has produced any addresses at all. When the loop in the connection handling thread ThreadOpenConnections2() sees an empty address map, it uses the &amp;quot;seed&amp;quot; IP addresses as backup.&lt;br /&gt;
&lt;br /&gt;
There is code is move away from seed nodes when possible. The presumption is that this is to avoid overloading those nodes. Once the local node has enough addresses (presumably learned from the seed nodes), the connection thread will close seed node connections.&lt;br /&gt;
&lt;br /&gt;
Seed Addresses are initially given a zero timestamp,&lt;br /&gt;
therefore they are not advertised in response to a &amp;quot;getaddr&amp;quot; request.&lt;br /&gt;
&lt;br /&gt;
===Ongoing &amp;quot;addr&amp;quot; advertisements===&lt;br /&gt;
Nodes may receive addresses in an &amp;quot;addr&amp;quot; message after having sent a &amp;quot;getaddr&amp;quot; request, or &amp;quot;addr&amp;quot; messages may arrive  unsolicited, because nodes advertise addresses gratuitously when they relay addresses (see below), when they advertise their own address periodically, and when a connection is made.&lt;br /&gt;
&lt;br /&gt;
If the address is from a really old version, it is ignored; if from a not-so-old version, it is ignored if we have 1000 addresses already.&lt;br /&gt;
&lt;br /&gt;
If the sender sent over 1000 addresses, they are all ignored.&lt;br /&gt;
&lt;br /&gt;
Addresses received from an &amp;quot;addr&amp;quot; message have a timestamp, but the timestamp is not necessarily honored directly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For every address in the message:&lt;br /&gt;
# If the timestamp is too low or too high, it is set to 5 days ago.&lt;br /&gt;
# We subtract 2 hours from the timestamp and add the address.&lt;br /&gt;
&lt;br /&gt;
Note that when any address is added, for any reason, the code that calls AddAddress() does not check to see if it already exists. The AddAddresss() function in [https://github.com/bitcoin/bitcoin/blob/master/src/net.cpp net.cpp] will do that, and if the address already exists, further processing is done to update the address record. If the advertised services of the address have changed, that is updated and stored.&lt;br /&gt;
&lt;br /&gt;
If the address has been seen in the last 24 hours and the timestamp is currently over 60 minutes old, then it is updated to 60 minutes ago.&lt;br /&gt;
&lt;br /&gt;
If the address has NOT been seen in the last 24 hours, and the timestamp is currently over 24 hours old, then it is updated to 24 hours ago.&lt;br /&gt;
&lt;br /&gt;
====Address Relay====&lt;br /&gt;
&lt;br /&gt;
Once addresses are added from an &amp;quot;addr&amp;quot; message (see above), they then may be relayed to the other nodes. First, the following criteria must be set [9]:&lt;br /&gt;
&lt;br /&gt;
#The address timestamp, after processing, is within 60 minutes of the current time&lt;br /&gt;
#The &amp;quot;addr&amp;quot; message contains 10 addresses or less&lt;br /&gt;
#And fGetAddr is not set on the node. fGetAddr starts false, is set to true when we request addresses from a node, and it is cleared when we receive less than 1000 addresses from a node.&lt;br /&gt;
#The address must be routable.&lt;br /&gt;
&lt;br /&gt;
When they meet the above criteria, the node hashes all the eligible node IP addresses, as well as the current day in the form of an integer, and the two nodes with the lowest hash value are chosen to have the address relayed to them.&lt;br /&gt;
&lt;br /&gt;
====Self broadcast====&lt;br /&gt;
&lt;br /&gt;
Every 24 hours, the node advertises its own address to all connected nodes.&lt;br /&gt;
&lt;br /&gt;
It also clears the list of the addresses we think the remote node has, which will trigger a refresh of sends to nodes. This code is in SendMessages() in [https://github.com/bitcoin/bitcoin/blob/master/src/main.cpp main.cpp].&lt;br /&gt;
&lt;br /&gt;
====Old Address Cleanup====&lt;br /&gt;
&lt;br /&gt;
In SendMessages() in [https://github.com/bitcoin/bitcoin/blob/master/src/main.cpp main.cpp], there is code to remove old addresses.&lt;br /&gt;
&lt;br /&gt;
This is done every ten minutes, as long as there are 3 active connections.&lt;br /&gt;
&lt;br /&gt;
The node erases messages that have not been used in 14 days as long as there are at least 1000 addresses in the map, and as long as the erasing process has not taken more than 20 seconds.&lt;br /&gt;
&lt;br /&gt;
===Addresses stored in the Database===&lt;br /&gt;
Addresses are stored in the database when AddAddress() is called.&lt;br /&gt;
&lt;br /&gt;
Addresses are read on startup when AppInit2() calls LoadAddresses(), which is located in [https://github.com/bitcoin/bitcoin/blob/master/src/db.cpp db.cpp].&lt;br /&gt;
&lt;br /&gt;
Currently, it appears all addresses are stored all at once whenever any address is stored or updated&amp;lt;ref&amp;gt;[http://bitcointalk.org/index.php?topic=26436.0 Lots of disk activity on Bitcoin startup: easy fix?]&amp;lt;/ref&amp;gt;. Indeed, AddAddress is seen to take over .01 seconds in various testing and is typically called tens of thousands of times in the initial 12 hours of running the client.&lt;br /&gt;
&lt;br /&gt;
===Command Line Provided Addresses===&lt;br /&gt;
&lt;br /&gt;
The user can specify nodes to connect to with the&lt;br /&gt;
 -addnode &amp;lt;ip&amp;gt; &lt;br /&gt;
command line argument. Multiple nodes may be specified.&lt;br /&gt;
&lt;br /&gt;
Addresses provided on the command line are initially given a zero timestamp, therefore they are not advertised in response to a &amp;quot;getaddr&amp;quot; request.&lt;br /&gt;
&lt;br /&gt;
The user can also specify an address to connect to with the -connect &amp;lt;ip&amp;gt;&lt;br /&gt;
command line argument. Multiple nodes may be specified.&lt;br /&gt;
&lt;br /&gt;
The -connect argument differs from -addnode in that -connect addresses are not added to the address database and when -connect is specified, only those addresses are used.&lt;br /&gt;
&lt;br /&gt;
===Text File Provided Addresses===&lt;br /&gt;
&lt;br /&gt;
The client will automatically read a file named &amp;quot;addr.txt&amp;quot; in the bitcoin data directory and will add any addresses it finds in there as node addresses. These nodes are given no special preference over other addresses. They are just added to the pool.&lt;br /&gt;
&lt;br /&gt;
Addresses loaded from the text file are initially given a zero timestamp, therefore they are not advertised in response to a &amp;quot;getaddr&amp;quot; request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Network#Bootstrapping|Network - Boostrapping]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Technical]]&lt;/div&gt;</summary>
		<author><name>Michagogo</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Running_Bitcoin&amp;diff=39070</id>
		<title>Running Bitcoin</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Running_Bitcoin&amp;diff=39070"/>
		<updated>2013-07-03T21:41:08Z</updated>

		<summary type="html">&lt;p&gt;Michagogo: Updated the command-line options and removed the IRC reference from the sample config file&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are two variations of the original bitcoin program available; one with a graphical user interface (usually referred to as just “Bitcoin”), and a &#039;headless&#039; version (called [[bitcoind]]). They are completely compatible with each other, and take the same command-line arguments, read the same configuration file, and read and write the same data files. You can run one copy of either Bitcoin or bitcoind on your system at a time (if you accidently try to launch another, the copy will let you know that Bitcoin or bitcoind is already running and will exit).&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Linux Quickstart==&lt;br /&gt;
&lt;br /&gt;
The simplest way to start from scratch with the command line client, automatically syncing blockchain and creating a wallet, is to just run this command (without arguments) from the directory containing your bitcoind binary:&lt;br /&gt;
&lt;br /&gt;
  ./bitcoind&lt;br /&gt;
&lt;br /&gt;
To run with the standard GUI interface:&lt;br /&gt;
&lt;br /&gt;
  ./bitcoin-qt&lt;br /&gt;
&lt;br /&gt;
==Command-line arguments==&lt;br /&gt;
&lt;br /&gt;
Give Bitcoin (or bitcoind) the -? or –-help argument and it will print out a list of the most commonly used command-line arguments and then exit:&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
  -?                     This help message&lt;br /&gt;
  -conf=&amp;lt;file&amp;gt;           Specify configuration file (default: bitcoin.conf)&lt;br /&gt;
  -pid=&amp;lt;file&amp;gt;            Specify pid file (default: bitcoind.pid)&lt;br /&gt;
  -gen                   Generate coins (default: 0)&lt;br /&gt;
  -datadir=&amp;lt;dir&amp;gt;         Specify data directory&lt;br /&gt;
  -dbcache=&amp;lt;n&amp;gt;           Set database cache size in megabytes (default: 25)&lt;br /&gt;
  -timeout=&amp;lt;n&amp;gt;           Specify connection timeout in milliseconds (default: 5000)&lt;br /&gt;
  -proxy=&amp;lt;ip:port&amp;gt;       Connect through socks proxy&lt;br /&gt;
  -socks=&amp;lt;n&amp;gt;             Select the version of socks proxy to use (4-5, default: 5)&lt;br /&gt;
  -tor=&amp;lt;ip:port&amp;gt;         Use proxy to reach tor hidden services (default: same as -proxy)&lt;br /&gt;
  -dns                   Allow DNS lookups for -addnode, -seednode and -connect&lt;br /&gt;
  -port=&amp;lt;port&amp;gt;           Listen for connections on &amp;lt;port&amp;gt; (default: 8333 or testnet: 18333)&lt;br /&gt;
  -maxconnections=&amp;lt;n&amp;gt;    Maintain at most &amp;lt;n&amp;gt; connections to peers (default: 125)&lt;br /&gt;
  -addnode=&amp;lt;ip&amp;gt;          Add a node to connect to and attempt to keep the connection open&lt;br /&gt;
  -connect=&amp;lt;ip&amp;gt;          Connect only to the specified node(s)&lt;br /&gt;
  -seednode=&amp;lt;ip&amp;gt;         Connect to a node to retrieve peer addresses, and disconnect&lt;br /&gt;
  -externalip=&amp;lt;ip&amp;gt;       Specify your own public address&lt;br /&gt;
  -onlynet=&amp;lt;net&amp;gt;         Only connect to nodes in network &amp;lt;net&amp;gt; (IPv4, IPv6 or Tor)&lt;br /&gt;
  -discover              Discover own IP address (default: 1 when listening and no -externalip)&lt;br /&gt;
  -checkpoints           Only accept block chain matching built-in checkpoints (default: 1)&lt;br /&gt;
  -listen                Accept connections from outside (default: 1 if no -proxy or -connect)&lt;br /&gt;
  -bind=&amp;lt;addr&amp;gt;           Bind to given address and always listen on it. Use [host]:port notation for IPv6&lt;br /&gt;
  -dnsseed               Find peers using DNS lookup (default: 1 unless -connect)&lt;br /&gt;
  -banscore=&amp;lt;n&amp;gt;          Threshold for disconnecting misbehaving peers (default: 100)&lt;br /&gt;
  -bantime=&amp;lt;n&amp;gt;           Number of seconds to keep misbehaving peers from reconnecting (default: 86400)&lt;br /&gt;
  -maxreceivebuffer=&amp;lt;n&amp;gt;  Maximum per-connection receive buffer, &amp;lt;n&amp;gt;*1000 bytes (default: 5000)&lt;br /&gt;
  -maxsendbuffer=&amp;lt;n&amp;gt;     Maximum per-connection send buffer, &amp;lt;n&amp;gt;*1000 bytes (default: 1000)&lt;br /&gt;
  -upnp                  Use UPnP to map the listening port (default: 1 when listening)&lt;br /&gt;
  -paytxfee=&amp;lt;amt&amp;gt;        Fee per KB to add to transactions you send&lt;br /&gt;
  -server                Accept command line and JSON-RPC commands&lt;br /&gt;
  -testnet               Use the test network&lt;br /&gt;
  -debug                 Output extra debugging information. Implies all other -debug* options&lt;br /&gt;
  -debugnet              Output extra network debugging information&lt;br /&gt;
  -logtimestamps         Prepend debug output with timestamp&lt;br /&gt;
  -shrinkdebugfile       Shrink debug.log file on client startup (default: 1 when no -debug)&lt;br /&gt;
  -printtoconsole        Send trace/debug info to console instead of debug.log file&lt;br /&gt;
  -printtodebugger       Send trace/debug info to debugger&lt;br /&gt;
  -rpcuser=&amp;lt;user&amp;gt;        Username for JSON-RPC connections&lt;br /&gt;
  -rpcpassword=&amp;lt;pw&amp;gt;      Password for JSON-RPC connections&lt;br /&gt;
  -rpcport=&amp;lt;port&amp;gt;        Listen for JSON-RPC connections on &amp;lt;port&amp;gt; (default: 8332 or testnet: 18332)&lt;br /&gt;
  -rpcallowip=&amp;lt;ip&amp;gt;       Allow JSON-RPC connections from specified IP address&lt;br /&gt;
  -rpcthreads=&amp;lt;n&amp;gt;        Set the number of threads to service RPC calls (default: 4)&lt;br /&gt;
  -blocknotify=&amp;lt;cmd&amp;gt;     Execute command when the best block changes (%s in cmd is replaced by block hash)&lt;br /&gt;
  -walletnotify=&amp;lt;cmd&amp;gt;    Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)&lt;br /&gt;
  -alertnotify=&amp;lt;cmd&amp;gt;     Execute command when a relevant alert is received (%s in cmd is replaced by message)&lt;br /&gt;
  -upgradewallet         Upgrade wallet to latest format&lt;br /&gt;
  -keypool=&amp;lt;n&amp;gt;           Set key pool size to &amp;lt;n&amp;gt; (default: 100)&lt;br /&gt;
  -rescan                Rescan the block chain for missing wallet transactions&lt;br /&gt;
  -salvagewallet         Attempt to recover private keys from a corrupt wallet.dat&lt;br /&gt;
  -checkblocks=&amp;lt;n&amp;gt;       How many blocks to check at startup (default: 288, 0 = all)&lt;br /&gt;
  -checklevel=&amp;lt;n&amp;gt;        How thorough the block verification is (0-4, default: 3)&lt;br /&gt;
  -txindex               Maintain a full transaction index (default: 0)&lt;br /&gt;
  -loadblock=&amp;lt;file&amp;gt;      Imports blocks from external blk000??.dat file&lt;br /&gt;
  -reindex               Rebuild block chain index from current blk000??.dat files&lt;br /&gt;
  -par=&amp;lt;n&amp;gt;               Set the number of script verification threads (up to 16, 0 = auto, &amp;lt;0 = leave that many cores free, default: 0)&lt;br /&gt;
&lt;br /&gt;
Block creation options:&lt;br /&gt;
  -blockminsize=&amp;lt;n&amp;gt;      Set minimum block size in bytes (default: 0)&lt;br /&gt;
  -blockmaxsize=&amp;lt;n&amp;gt;      Set maximum block size in bytes (default: 250000)&lt;br /&gt;
  -blockprioritysize=&amp;lt;n&amp;gt; Set maximum size of high-priority/low-fee transactions in bytes (default: 27000)&lt;br /&gt;
&lt;br /&gt;
SSL options: (see the Bitcoin Wiki for SSL setup instructions)&lt;br /&gt;
  -rpcssl                                  Use OpenSSL (https) for JSON-RPC connections&lt;br /&gt;
  -rpcsslcertificatechainfile=&amp;lt;file.cert&amp;gt;  Server certificate file (default: server.cert)&lt;br /&gt;
  -rpcsslprivatekeyfile=&amp;lt;file.pem&amp;gt;         Server private key (default: server.pem)&lt;br /&gt;
  -rpcsslciphers=&amp;lt;ciphers&amp;gt;                 Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH)&lt;br /&gt;
&lt;br /&gt;
UI options:&lt;br /&gt;
  -lang=&amp;lt;lang&amp;gt;           Set language, for example &amp;quot;de_DE&amp;quot; (default: system locale)&lt;br /&gt;
  -min                   Start minimized&lt;br /&gt;
  -splash                Show splash screen on startup (default: 1)&lt;br /&gt;
&lt;br /&gt;
Many of the boolean options can also be set to off by specifying them with a &amp;quot;no&amp;quot; prefix: e.g. -nodnseed.&lt;br /&gt;
&lt;br /&gt;
==Bitcoin.conf Configuration File==&lt;br /&gt;
All command-line options (except for -datadir and -conf) may be specified in a configuration file, and all configuration file options may also be specified on the command line. Command-line options override values set in the configuration file.&lt;br /&gt;
&lt;br /&gt;
The configuration file is a list of setting=value pairs, one per line, with optional comments starting with the &#039;#&#039; character.&lt;br /&gt;
&lt;br /&gt;
The configuration file is not automatically created; you can create it using your favorite plain-text editor. By default, Bitcoin (or bitcoind) will look for a file named &#039;bitcoin.conf&#039; in the bitcoin [[data directory]], but both the data directory and the configuration file path may be changed using the -datadir and -conf command-line arguments.&lt;br /&gt;
{|&lt;br /&gt;
! Operating System&lt;br /&gt;
! Default bitcoin datadir&lt;br /&gt;
! Typical path to configuration file&lt;br /&gt;
|-&lt;br /&gt;
| Windows&lt;br /&gt;
| %APPDATA%\Bitcoin\&lt;br /&gt;
| (XP) C:\Documents and Settings\username\Application Data\Bitcoin\bitcoin.conf&lt;br /&gt;
(Vista, 7) C:\Users\username\AppData\Roaming\Bitcoin\bitcoin.conf&lt;br /&gt;
|-&lt;br /&gt;
| Linux&lt;br /&gt;
| $HOME/.bitcoin/&lt;br /&gt;
| /home/username/.bitcoin/bitcoin.conf&lt;br /&gt;
|-&lt;br /&gt;
| Mac OSX&lt;br /&gt;
| $HOME/Library/Application Support/Bitcoin/&lt;br /&gt;
| /Users/username/Library/Application Support/Bitcoin/bitcoin.conf&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: if running Bitcoin in testnet mode, the sub-folder &amp;quot;testnet&amp;quot; will be appended to the data directory automatically.&lt;br /&gt;
&lt;br /&gt;
==Sample Bitcoin.conf==&lt;br /&gt;
Here is a sample bitcoin.conf file.&lt;br /&gt;
&lt;br /&gt;
  # bitcoin.conf configuration file. Lines beginning with # are comments.&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  # Network-related settings:&lt;br /&gt;
  &lt;br /&gt;
  # Run on the test network instead of the real bitcoin network.&lt;br /&gt;
  #testnet=0&lt;br /&gt;
  &lt;br /&gt;
  # Connect via a socks4 proxy&lt;br /&gt;
  #proxy=127.0.0.1:9050&lt;br /&gt;
  &lt;br /&gt;
  ##############################################################&lt;br /&gt;
  ##            Quick Primer on addnode vs connect            ##&lt;br /&gt;
  ##  Let&#039;s say for instance you use addnode=4.2.2.4          ##&lt;br /&gt;
  ##  addnode will connect you to and tell you about the      ##&lt;br /&gt;
  ##    nodes connected to 4.2.2.4.  In addition it will tell ##&lt;br /&gt;
  ##    the other nodes connected to it that you exist so     ##&lt;br /&gt;
  ##    they can connect to you.                              ##&lt;br /&gt;
  ##  connect will not do the above when you &#039;connect&#039; to it. ##&lt;br /&gt;
  ##    It will *only* connect you to 4.2.2.4 and no one else.##&lt;br /&gt;
  ##                                                          ##&lt;br /&gt;
  ##  So if you&#039;re behind a firewall, or have other problems  ##&lt;br /&gt;
  ##  finding nodes, add some using &#039;addnode&#039;.                ##&lt;br /&gt;
  ##                                                          ##&lt;br /&gt;
  ##  If you want to stay private, use &#039;connect&#039; to only      ##&lt;br /&gt;
  ##  connect to &amp;quot;trusted&amp;quot; nodes.                             ##&lt;br /&gt;
  ##                                                          ##&lt;br /&gt;
  ##  If you run multiple nodes on a LAN, there&#039;s no need for ##&lt;br /&gt;
  ##  all of them to open lots of connections.  Instead       ##&lt;br /&gt;
  ##  &#039;connect&#039; them all to one node that is port forwarded   ##&lt;br /&gt;
  ##  and has lots of connections.                            ##&lt;br /&gt;
  ##       Thanks goes to [Noodle] on Freenode.               ##&lt;br /&gt;
  ##############################################################&lt;br /&gt;
  &lt;br /&gt;
  # Use as many addnode= settings as you like to connect to specific peers&lt;br /&gt;
  #addnode=69.164.218.197&lt;br /&gt;
  #addnode=10.0.0.2:8333&lt;br /&gt;
  &lt;br /&gt;
  # ... or use as many connect= settings as you like to connect ONLY&lt;br /&gt;
  # to specific peers:&lt;br /&gt;
  #connect=69.164.218.197&lt;br /&gt;
  #connect=10.0.0.1:8333&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  # Maximum number of inbound+outbound connections.&lt;br /&gt;
  #maxconnections=&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  # JSON-RPC options (for controlling a running Bitcoin/bitcoind process)&lt;br /&gt;
  &lt;br /&gt;
  # server=1 tells Bitcoin-QT to accept JSON-RPC commands.&lt;br /&gt;
  #server=0&lt;br /&gt;
  &lt;br /&gt;
  # You must set rpcuser and rpcpassword to secure the JSON-RPC api&lt;br /&gt;
  #rpcuser=Ulysseys&lt;br /&gt;
  #rpcpassword=YourSuperGreatPasswordNumber_DO_NOT_USE_THIS_OR_YOU_WILL_GET_ROBBED_385593&lt;br /&gt;
  &lt;br /&gt;
  # How many seconds bitcoin will wait for a complete RPC HTTP request.&lt;br /&gt;
  # after the HTTP connection is established. &lt;br /&gt;
  #rpctimeout=30&lt;br /&gt;
  &lt;br /&gt;
  # By default, only RPC connections from localhost are allowed.  Specify&lt;br /&gt;
  # as many rpcallowip= settings as you like to allow connections from&lt;br /&gt;
  # other hosts (and you may use * as a wildcard character):&lt;br /&gt;
  #rpcallowip=10.1.1.34&lt;br /&gt;
  #rpcallowip=192.168.1.*&lt;br /&gt;
  &lt;br /&gt;
  # Listen for RPC connections on this TCP port:&lt;br /&gt;
  #rpcport=8332&lt;br /&gt;
  &lt;br /&gt;
  # You can use Bitcoin or bitcoind to send commands to Bitcoin/bitcoind&lt;br /&gt;
  # running on another host using this option:&lt;br /&gt;
  #rpcconnect=127.0.0.1&lt;br /&gt;
  &lt;br /&gt;
  # Use Secure Sockets Layer (also known as TLS or HTTPS) to communicate&lt;br /&gt;
  # with Bitcoin -server or bitcoind&lt;br /&gt;
  #rpcssl=1&lt;br /&gt;
  &lt;br /&gt;
  # OpenSSL settings used when rpcssl=1&lt;br /&gt;
  #rpcsslciphers=TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH&lt;br /&gt;
  #rpcsslcertificatechainfile=server.cert&lt;br /&gt;
  #rpcsslprivatekeyfile=server.pem&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  # Miscellaneous options&lt;br /&gt;
  &lt;br /&gt;
  # Set gen=1 to attempt to generate bitcoins&lt;br /&gt;
  #gen=0&lt;br /&gt;
  &lt;br /&gt;
  # Use SSE instructions to try to generate bitcoins faster.&lt;br /&gt;
  #4way=1&lt;br /&gt;
  &lt;br /&gt;
  # Pre-generate this many public/private key pairs, so wallet backups will be valid for&lt;br /&gt;
  # both prior transactions and several dozen future transactions.&lt;br /&gt;
  #keypool=100&lt;br /&gt;
  &lt;br /&gt;
  # Pay an optional transaction fee every time you send bitcoins.  Transactions with fees&lt;br /&gt;
  # are more likely than free transactions to be included in generated blocks, so may&lt;br /&gt;
  # be validated sooner.&lt;br /&gt;
  #paytxfee=0.00&lt;br /&gt;
  &lt;br /&gt;
  # Allow direct connections for the &#039;pay via IP address&#039; feature.&lt;br /&gt;
  #allowreceivebyip=1&lt;br /&gt;
    &lt;br /&gt;
  # User interface options&lt;br /&gt;
  &lt;br /&gt;
  # Start Bitcoin minimized&lt;br /&gt;
  #min=1&lt;br /&gt;
  &lt;br /&gt;
  # Minimize to the system tray&lt;br /&gt;
  #minimizetotray=1&lt;br /&gt;
&lt;br /&gt;
==Platforms==&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
====Start automatically====&lt;br /&gt;
To configure the Bitcoin client to start automatically:&lt;br /&gt;
&lt;br /&gt;
You might use the configuration-file, or the GUI-Settings:&lt;br /&gt;
&lt;br /&gt;
Settings -&amp;gt; Options&lt;br /&gt;
&lt;br /&gt;
then mark the checkbox titled:&lt;br /&gt;
 [X] Start Bitcoin on system startup&lt;br /&gt;
&lt;br /&gt;
[[{{ns:file}}:Client_Settings_Options_windows.png]]&lt;br /&gt;
&lt;br /&gt;
====Batch automation====&lt;br /&gt;
To work with batch, you have to start the daemon (bitcoind.exe). The bitcoin.exe run with option &amp;quot;-server&amp;quot; will respond with GUI-messages you are not able to process its answers.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
[[{{ns:file}}:MacBitcoinStartOnLogin.png]]&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
[[{{ns:file}}:Client_Settings_Options.png]]&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Data directory]]&lt;br /&gt;
&lt;br /&gt;
[[es:Ejecución de Bitcoin]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Michagogo</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Testnet&amp;diff=38946</id>
		<title>Testnet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Testnet&amp;diff=38946"/>
		<updated>2013-06-28T00:53:56Z</updated>

		<summary type="html">&lt;p&gt;Michagogo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;testnet&#039;&#039;&#039; is an alternative Bitcoin [[block chain]], to be used for testing. This allows application developers or bitcoin testers to experiment, without having to use real bitcoins or worrying about breaking the main bitcoin chain.&lt;br /&gt;
&lt;br /&gt;
Run bitcoin or bitcoind with the -testnet flag to use the testnet (or put testnet=1 in the bitcoin.conf file).&lt;br /&gt;
&lt;br /&gt;
There have been three generations of testnet. Testnet2 was just the first testnet reset with a different genesis block, because people were starting to trade testnet coins for real money. &#039;&#039;&#039;Testnet3&#039;&#039;&#039; is the current test network. It was introduced with the 0.7 release, introduced a third genesis block, a new rule to avoid the &amp;quot;difficulty was too high, is now too low, and transactions take too long to verify&amp;quot; problem, and contains blocks with edge-case transactions designed to test implementation compatibility.&lt;br /&gt;
&lt;br /&gt;
==Differences==&lt;br /&gt;
* Default Bitcoin network protocol listen port is 18333 (instead of 8333)&lt;br /&gt;
* Default RPC connection port is 18332 (instead of 8332)&lt;br /&gt;
* Bootstrapping IRC channel is #bitcoinTEST instead of #bitcoin (both on irc.lfnet.org). The built-in node list is disabled.&lt;br /&gt;
* A different value of ADDRESSVERSION field ensures no testnet BitCoin addresses will work on the production network. (0x6F rather than 0x00)&lt;br /&gt;
* The protocol message header bytes are 0x0B110907 (instead of 0xF9BEB4D9) &lt;br /&gt;
* Minimum [[difficulty]] of 1.0 on testnet is equal to difficulty of 0.5 on mainnet. This means that the mainnet-equivalent of any testnet difficulty is half the testnet difficulty. In addition, if no block has been found in 20 minutes, the difficulty automatically resets back to the minimum for a single block, after which it returns to its previous value.&lt;br /&gt;
* A new genesis block&lt;br /&gt;
* The IsStandard() check is disabled so that non-standard transactions can be experimented with.&lt;br /&gt;
&lt;br /&gt;
==Genesis Block==&lt;br /&gt;
&lt;br /&gt;
Testnet uses a different genesis block to the main network. You can find it at http://blockexplorer.com/testnet/b/0&lt;br /&gt;
The testnet was reset with a new genesis block for the 0.7 bitcoin release.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [https://sourceforge.net/projects/bitcoin/files/Bitcoin/testnet-in-a-box/ Testnet-In-A-Box self-contained testnet]&lt;br /&gt;
* [https://github.com/freewil/bitcoin-testnet-box Forked/Updated testnet-box]&lt;br /&gt;
* [https://bitcointalk.org/?topic=4483.0 Test Network forum topic]&lt;br /&gt;
* [https://freebitcoins.appspot.com/test/ Testnet Faucet]&lt;br /&gt;
* [http://testnet.mojocoin.com/ Another Testnet Faucet]&lt;br /&gt;
* [http://pool.qdoop.net:18331/chain/Testnet3 Testnet3 ABE based Block Explorer]&lt;br /&gt;
* [http://blockexplorer.com/testnet Testnet Block Explorer]&lt;br /&gt;
* [http://blockexplorer.com/testnet/q/getdifficulty Testnet current difficulty] As output by BitCoin&#039;s getDifficulty]&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Michagogo</name></author>
	</entry>
</feed>