<?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=Prof7bit</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=Prof7bit"/>
	<link rel="alternate" type="text/html" href="https://en.bitcoin.it/wiki/Special:Contributions/Prof7bit"/>
	<updated>2026-06-07T16:42:10Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Protocol_documentation&amp;diff=13712</id>
		<title>Protocol documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Protocol_documentation&amp;diff=13712"/>
		<updated>2011-07-27T14:59:02Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: clarification what the &amp;quot;limited&amp;quot; means&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sources:&lt;br /&gt;
* [[Original Bitcoin client]] source&lt;br /&gt;
&lt;br /&gt;
Type names used in this documentation are from the C99 standard.&lt;br /&gt;
&lt;br /&gt;
==Common standards==&lt;br /&gt;
&lt;br /&gt;
=== Hashes ===&lt;br /&gt;
&lt;br /&gt;
Usually, when a hash is computed within bitcoin, it is computed twice. Most of the time [http://en.wikipedia.org/wiki/SHA-2 SHA-256] hashes are used, however [http://en.wikipedia.org/wiki/RIPEMD RIPEMD-160] is also used when a shorter hash is desirable (for example when creating a bitcoin address).&lt;br /&gt;
&lt;br /&gt;
Example of double-SHA-256 encoding of string &amp;quot;hello&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 hello&lt;br /&gt;
 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 (first round of sha-256)&lt;br /&gt;
 9595c9df90075148eb06860365df33584b75bff782a510c6cd4883a419833d50 (second round of sha-256)&lt;br /&gt;
&lt;br /&gt;
For bitcoin addresses (RIPEMD-160) this would give:&lt;br /&gt;
&lt;br /&gt;
 hello&lt;br /&gt;
 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 (first round is sha-256)&lt;br /&gt;
 b6a9c8c230722b7c748331a8b450f05566dc7d0f (with ripemd-160)&lt;br /&gt;
&lt;br /&gt;
=== Merkle Trees ===&lt;br /&gt;
&lt;br /&gt;
Merkle trees are binary trees of hashes. Merkle trees in bitcoin use &#039;&#039;&#039;Double&#039;&#039;&#039; SHA-256, and are built up as so:&lt;br /&gt;
 &lt;br /&gt;
 hash(a) = sha256(sha256(a))&lt;br /&gt;
 &lt;br /&gt;
 hash(a) hash(b) hash(c)&lt;br /&gt;
 hash(hash(a)+hash(b)) hash(hash(c)+hash(c))&lt;br /&gt;
 hash(hash(hash(a)+hash(b))+hash(hash(c)+hash(c)))&lt;br /&gt;
&lt;br /&gt;
They are paired up, with the last element being _duplicated_.&lt;br /&gt;
&lt;br /&gt;
=== Signatures ===&lt;br /&gt;
&lt;br /&gt;
Bitcoin uses [http://en.wikipedia.org/wiki/Elliptic_curve_cryptography Elliptic Curve] [http://en.wikipedia.org/wiki/Digital_Signature_Algorithm Digital Signature Algorithm] (ECDSA) to sign transactions. &lt;br /&gt;
&lt;br /&gt;
For ECDSA the secp256k1 curve from http://www.secg.org/collateral/sec2_final.pdf is used.&lt;br /&gt;
&lt;br /&gt;
Public keys (in scripts) are given as 04 &amp;lt;x&amp;gt; &amp;lt;y&amp;gt; where x and y are 32 byte strings representing the coordinates of a point on the curve. Signatures use [http://en.wikipedia.org/wiki/Distinguished_Encoding_Rules DER encoding] to pack the r and s components into a single byte stream (because this is what OpenSSL produces by default).&lt;br /&gt;
&lt;br /&gt;
=== Transaction Verification ===&lt;br /&gt;
{{See also|OP_CHECKSIG}}&lt;br /&gt;
&lt;br /&gt;
The first transaction of a block is usually the generating transaction, which do not include any &amp;quot;in&amp;quot; transaction, and generate bitcoins (from fees for example) usually received by whoever solved the block containing this transaction.&lt;br /&gt;
Such transactions are called a &amp;quot;coinbase transaction&amp;quot; and are accepted by bitcoin clients without any need to execute scripts, provided there is only one per block.&lt;br /&gt;
&lt;br /&gt;
If a transaction is not a coinbase, it references previous transaction hashes as input, and the index of the other transaction&#039;s output used as input for this transaction.&lt;br /&gt;
The script from the in part of this transaction is executed.&lt;br /&gt;
Then the script from the out part of the referenced transaction is executed.&lt;br /&gt;
It is considered valid if the top element of the stack is true.&lt;br /&gt;
&lt;br /&gt;
=== Addresses ===&lt;br /&gt;
&lt;br /&gt;
A bitcoin address is in fact the hash of a ECDSA public key, computed this way:&lt;br /&gt;
&lt;br /&gt;
 Version = 1 byte of 0 (zero); on the test network, this is 1 byte of 111&lt;br /&gt;
 Key hash = Version concatenated with RIPEMD-160(SHA-256(public key))&lt;br /&gt;
 Checksum = 1st 4 bytes of SHA-256(SHA-256(Key hash))&lt;br /&gt;
 Bitcoin Address = Base58Encode(Key hash concatenated with Checksum)&lt;br /&gt;
&lt;br /&gt;
The Base58 encoding used is home made, and has some differences. Especially, leading zeroes are kept as single zeroes when conversion happens.&lt;br /&gt;
&lt;br /&gt;
== Common structures ==&lt;br /&gt;
&lt;br /&gt;
Almost all integers are encoded in little endian. Only IP or port number are encoded big endian.&lt;br /&gt;
&lt;br /&gt;
=== Message structure ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || magic || uint32_t || Magic value indicating message origin network, and used to seek to next message when stream state is unknown&lt;br /&gt;
|-&lt;br /&gt;
| 12 || command || char[12] || ASCII string identifying the packet content, NULL padded (non-NULL padding results in packet rejected)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || length || uint32_t || Length of payload in number of bytes&lt;br /&gt;
|-&lt;br /&gt;
| 4 || checksum || uint32_t || First 4 bytes of sha256(sha256(payload)) (not included in version or verack)&lt;br /&gt;
|-&lt;br /&gt;
| ? || payload || uchar[] || The actual data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The version and verack messages do not have a checksum, the payload starts 4 bytes earlier.&lt;br /&gt;
&lt;br /&gt;
Known magic values:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Network !! Magic value !! Sent over wire as&lt;br /&gt;
|-&lt;br /&gt;
| main || 0xD9B4BEF9 || F9 BE B4 D9&lt;br /&gt;
|-&lt;br /&gt;
| testnet || 0xDAB5BFFA || FA BF B5 DA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variable length integer ===&lt;br /&gt;
&lt;br /&gt;
Integer can be encoded depending on the represented value to save space.  Variable length integers always precede an array/vector of a type of data that may vary in length.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Storage length !! Format&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; 0xfd || 1 || uint8_t&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;= 0xffff || 3 || 0xfd + uint16_t&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;= 0xffffffff || 5 || 0xfe + uint32_t&lt;br /&gt;
|-&lt;br /&gt;
| - || 9 || 0xff + uint64_t&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variable length string ===&lt;br /&gt;
&lt;br /&gt;
Variable length string can be stored using a variable length integer followed by the string itself.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || length || var_int || Length of the string&lt;br /&gt;
|-&lt;br /&gt;
| ? || string || char[] || The string itself (can be empty)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Network address ===&lt;br /&gt;
&lt;br /&gt;
When a network address is needed somewhere, this structure is used.  This protocol and structure supports IPv6, &#039;&#039;&#039;but note that the original client currently only supports IPv4 networking&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 8 || services || uint64_t || same service(s) listed in [[#version|version]]&lt;br /&gt;
|-&lt;br /&gt;
| 16 || IPv6/4 || char[16] || IPv6 address. Network byte order. The original client only supports IPv4 and only reads the last 4 bytes to get the IPv4 address. However, the IPv4 address is written into the message as a 16 byte [http://en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses IPv4-mapped IPv6 address]&lt;br /&gt;
(12 bytes &#039;&#039;00 00 00 00  00 00 00 00  00 00 FF FF&#039;&#039;, followed by the 4 bytes of the IPv4 address).&lt;br /&gt;
|-&lt;br /&gt;
| 2 || port || uint16_t || port number, network byte order&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hexdump example of Network address structure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000   01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................&lt;br /&gt;
0010   00 00 FF FF 0A 00 00 01  20 8D                    ........ .&lt;br /&gt;
&lt;br /&gt;
Network address:&lt;br /&gt;
 01 00 00 00 00 00 00 00                         - 1 (NODE_NETWORK: see services listed under version command)&lt;br /&gt;
 00 00 00 00 00 00 00 00 00 00 FF FF 0A 00 00 01 - IPv6: ::ffff:10.0.0.1 or IPv4: 10.0.0.1&lt;br /&gt;
 20 8D                                           - Port 8333&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Inventory Vectors ===&lt;br /&gt;
&lt;br /&gt;
Inventory vectors are used for notifying other nodes about objects they have or data which is being requested.&lt;br /&gt;
&lt;br /&gt;
Inventory vectors consist of the following data format:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || type || uint32_t || Identifies the object type linked to this inventory&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash || char[32] || Hash of the object&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The object type is currently defined as one of the following possibilities:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ERROR || Any data of with this number may be ignored&lt;br /&gt;
|-&lt;br /&gt;
| 1 || MSG_TX || Hash is related to a transaction&lt;br /&gt;
|-&lt;br /&gt;
| 2 || MSG_BLOCK || Hash is related to a data block&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Other Data Type values are considered reserved for future implementations.&lt;br /&gt;
&lt;br /&gt;
=== Block Headers ===&lt;br /&gt;
&lt;br /&gt;
Block headers are sent in a headers packet in response to a getheaders message.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || Block version information, based upon the software version creating this block&lt;br /&gt;
|-&lt;br /&gt;
| 32 || prev_block || char[32] || The hash value of the previous block this particular block references&lt;br /&gt;
|-&lt;br /&gt;
| 32 || merkle_root || char[32] || The reference to a Merkle tree collection which is a hash of all transactions related to this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || timestamp || uint32_t || A timestamp recording when this block was created (Limited to 2106!)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bits || uint32_t || The calculated difficulty target being used for this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nonce || uint32_t || The nonce used to generate this block… to allow variations of the header and compute different hashes&lt;br /&gt;
|-&lt;br /&gt;
| 1 || txn_count || uint8_t || Number of transaction entries, this value is always 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Message types ==&lt;br /&gt;
&lt;br /&gt;
=== version ===&lt;br /&gt;
&lt;br /&gt;
When a node creates an outgoing connection, it will immediately advertise its version. The remote node will respond with its version. No futher communication is possible until both peers have exchanged their version.&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || int32_t || Identifies protocol version being used by the node&lt;br /&gt;
|-&lt;br /&gt;
| 8 || services || uint64_t || bitfield of features to be enabled for this connection&lt;br /&gt;
|-&lt;br /&gt;
| 8 || timestamp || int64_t || standard UNIX timestamp in seconds&lt;br /&gt;
|-&lt;br /&gt;
| 26 || addr_me || net_addr || The network address of the node emitting this message&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;| version &amp;gt;= 106&lt;br /&gt;
|-&lt;br /&gt;
| 26 || addr_you || net_addr || The network address seen by the node emitting this message (ie, the address of the receiving node)&lt;br /&gt;
|-&lt;br /&gt;
| 8 || nonce || uint64_t || Node random nonce, randomly generated every time a version packet is sent. This nonce is used to detect connections to self.&lt;br /&gt;
|-&lt;br /&gt;
| ? || sub_version_num || [[#Variable length string|var_str]] || Secondary Version information (0x00 if string is 0 bytes long)&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;| version &amp;gt;= 209&lt;br /&gt;
|-&lt;br /&gt;
| 4 || start_height || int32_t || The last block received by the emitting node&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If the emitter of the packet has version &amp;gt;= 209, a &amp;quot;verack&amp;quot; packet shall be sent if the version packet was accepted.&lt;br /&gt;
&lt;br /&gt;
The following services are currently assigned:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || NODE_NETWORK || This node can be asked for full blocks instead of just headers.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hexdump example of version message (note the message header for this version message does not have a checksum):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000   F9 BE B4 D9 76 65 72 73  69 6F 6E 00 00 00 00 00   ....version.....&lt;br /&gt;
0010   55 00 00 00 9C 7C 00 00  01 00 00 00 00 00 00 00   U....|..........&lt;br /&gt;
0020   E6 15 10 4D 00 00 00 00  01 00 00 00 00 00 00 00   ...M............&lt;br /&gt;
0030   00 00 00 00 00 00 00 00  00 00 FF FF 0A 00 00 01   ................&lt;br /&gt;
0040   DA F6 01 00 00 00 00 00  00 00 00 00 00 00 00 00   ................&lt;br /&gt;
0050   00 00 00 00 FF FF 0A 00  00 02 20 8D DD 9D 20 2C   .......... ... ,&lt;br /&gt;
0060   3A B4 57 13 00 55 81 01  00                        :.W..U...&lt;br /&gt;
&lt;br /&gt;
Message header:&lt;br /&gt;
 F9 BE B4 D9                                                                   - Main network magic bytes&lt;br /&gt;
 76 65 72 73 69 6F 6E 00 00 00 00 00                                           - &amp;quot;version&amp;quot; command&lt;br /&gt;
 55 00 00 00                                                                   - Payload is 85 bytes long&lt;br /&gt;
                                                                              - No checksum in version message&lt;br /&gt;
Version message:&lt;br /&gt;
 9C 7C 00 00                                                                   - 31900 (version 0.3.19)&lt;br /&gt;
 01 00 00 00 00 00 00 00                                                       - 1 (NODE_NETWORK services)&lt;br /&gt;
 E6 15 10 4D 00 00 00 00                                                       - Mon Dec 20 21:50:14 EST 2010&lt;br /&gt;
 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 0A 00 00 01 DA F6 - Sender address info - see Network Address&lt;br /&gt;
 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 0A 00 00 02 20 8D - Recipient address info - see Network Address&lt;br /&gt;
 DD 9D 20 2C 3A B4 57 13                                                       - Node random unique ID&lt;br /&gt;
 00                                                                            - &amp;quot;&amp;quot; sub-version string (string is 0 bytes long)&lt;br /&gt;
 55 81 01 00                                                                   - Last block sending node has is block #98645&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== verack ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;verack&#039;&#039; message is sent in reply to &#039;&#039;version&#039;&#039; for clients &amp;gt;= 209.  This message consists of only a [[#Message structure|message header]] with the command string &amp;quot;verack&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hexdump of the verack message:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000   F9 BE B4 D9 76 65 72 61  63 6B 00 00 00 00 00 00   ....verack......&lt;br /&gt;
0010   00 00 00 00                                        ....&lt;br /&gt;
&lt;br /&gt;
Message header:&lt;br /&gt;
 F9 BE B4 D9                          - Main network magic bytes&lt;br /&gt;
 76 65 72 61  63 6B 00 00 00 00 00 00 - &amp;quot;verack&amp;quot; command&lt;br /&gt;
 00 00 00 00                          - Payload is 0 bytes long&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== addr ===&lt;br /&gt;
&lt;br /&gt;
Provide information on known nodes of the network. Non-advertised nodes should be forgotten after typically 3 hours&lt;br /&gt;
&lt;br /&gt;
Payload (maximum payload length: 1000 bytes):&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || count || var_int || Number of address entries&lt;br /&gt;
|-&lt;br /&gt;
| 30x? || addr_list || (uint32_t + net_addr)[] || Address of other nodes on the network. version &amp;lt; 209 will only read the first one. The uint32_t is a timestamp (see note below).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Starting version 31402, addresses are prefixed with a timestamp. If no timestamp is present, the addresses should not be relayed to other peers, unless it is indeed confirmed they are up.&lt;br /&gt;
&lt;br /&gt;
Hexdump example of &#039;&#039;addr&#039;&#039; message:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000   F9 BE B4 D9 61 64 64 72  00 00 00 00 00 00 00 00   ....addr........&lt;br /&gt;
0010   1F 00 00 00 ED 52 39 9B  01 E2 15 10 4D 01 00 00   .....R9.....M...&lt;br /&gt;
0020   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 FF   ................&lt;br /&gt;
0030   FF 0A 00 00 01 20 8D                               ..... .&lt;br /&gt;
&lt;br /&gt;
Message Header:&lt;br /&gt;
 F9 BE B4 D9                                     - Main network magic bytes&lt;br /&gt;
 61 64 64 72  00 00 00 00 00 00 00 00            - &amp;quot;addr&amp;quot;&lt;br /&gt;
 1F 00 00 00                                     - payload is 31 bytes long&lt;br /&gt;
 ED 52 39 9B                                     - checksum of payload&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
 01                                              - 1 address in this message&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
 E2 15 10 4D                                     - Mon Dec 20 21:50:10 EST 2010 (only when version is &amp;gt;= 31402)&lt;br /&gt;
 01 00 00 00 00 00 00 00                         - 1 (NODE_NETWORK service - see version message)&lt;br /&gt;
 00 00 00 00 00 00 00 00 00 00 FF FF 0A 00 00 01 - IPv4: 10.0.0.1, IPv6: ::ffff:10.0.0.1 (IPv4-mapped IPv6 address)&lt;br /&gt;
 20 8D                                           - port 8333&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== inv ===&lt;br /&gt;
&lt;br /&gt;
Allows a node to advertise its knowledge of one or more objects. It can be received unsolicited, or in reply to &#039;&#039;getblocks&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Payload (maximum payload length: 50000 bytes):&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || count || var_int || Number of inventory entries&lt;br /&gt;
|-&lt;br /&gt;
| 36x? || inventory || [[Protocol specification#Inventory Vectors|inv_vect]][] || Inventory vectors&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== getdata ===&lt;br /&gt;
&lt;br /&gt;
getdata is used in response to inv, to retrieve the content of a specific object, and is usually sent after receiving an &#039;&#039;inv&#039;&#039; packet, after filtering known elements.&lt;br /&gt;
&lt;br /&gt;
Payload (maximum payload length: 50000 bytes):&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || count || var_int || Number of inventory entries&lt;br /&gt;
|-&lt;br /&gt;
| 36x? || inventory || [[Protocol specification#Inventory Vectors|inv_vect]][] || Inventory vectors&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== getblocks ===&lt;br /&gt;
&lt;br /&gt;
Return an &#039;&#039;inv&#039;&#039; packet containing the list of blocks starting at hash_start, up to hash_stop or 500 blocks, whichever comes first. To receive the next blocks hashes, one needs to issue getblocks again with the last known hash.&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || the protocol version&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || start count || var_int || number of block locator hash entries&lt;br /&gt;
|-&lt;br /&gt;
| 32+ || block locator hashes || char[32] || block locator object. Newest back to genesis block (dense to start, but then sparse)&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash_stop || char[32] || hash of the last desired block. Set to zero to get as many blocks as possible (500)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To create the block locator hashes, keep pushing hashes until you go back to the genesis block. After pushing 10 hashes back, the step backwards doubles every loop:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$step = 1&lt;br /&gt;
loop until at genesis block:&lt;br /&gt;
    store current block hash&lt;br /&gt;
    move backwards by $step&lt;br /&gt;
    if number of stored hashes &amp;gt; 10:&lt;br /&gt;
        $step *= 2&lt;br /&gt;
store genesis block&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== getheaders ===&lt;br /&gt;
&lt;br /&gt;
Return a &#039;&#039;headers&#039;&#039; packet containing the headers for blocks starting at hash_start, up to hash_stop or 2000 blocks, whichever comes first. To receive the next blocks hashes, one needs to issue getheaders again with the last known hash. The &#039;&#039;getheaders&#039;&#039; command is used by thin clients to quickly download the blockchain where the contents of the transactions would be irrelevant (because they are not ours). &lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || start count || var_int || number of hash_start entries&lt;br /&gt;
|-&lt;br /&gt;
| 32+ || hash_start || char[32] || hash of the last known block of the emitting node&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash_stop || char[32] || hash of the last desired block. Set to zero to get as many blocks as possible (2000)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== tx ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;tx&#039;&#039; describes a bitcoin transaction, in reply to &#039;&#039;getdata&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || Transaction data format version&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || tx_in count || var_int || Number of Transaction inputs&lt;br /&gt;
|-&lt;br /&gt;
| 41+ || tx_in || tx_in[] || A list of 1 or more transaction inputs or sources for coins&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || tx_out count || var_int || Number of Transaction outputs&lt;br /&gt;
|-&lt;br /&gt;
| 8+ || tx_out || tx_out[] || A list of 1 or more transaction outputs or destinations for coins&lt;br /&gt;
|-&lt;br /&gt;
| 4 || lock_time || uint32_t || The block number or timestamp at which this transaction is locked:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Always locked&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; 500000000  || Block number at which this transaction is locked&lt;br /&gt;
|-&lt;br /&gt;
| &amp;gt;= 500000000 || UNIX timestamp at which this transaction is locked&lt;br /&gt;
|}&lt;br /&gt;
A non-locked transaction must not be included in blocks, and it can be modified by broadcasting a new version before the time has expired (replacement is currently disabled in Bitcoin, however, so this is useless).&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
TxIn consists of the following fields:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 36 || previous_output || outpoint || The previous output transaction reference, as an OutPoint structure&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || script length || var_int || The length of the signature script&lt;br /&gt;
|-&lt;br /&gt;
| ? || signature script || uchar[] || Computational Script for confirming transaction authorization&lt;br /&gt;
|-&lt;br /&gt;
| 4 || sequence || uint32_t || Transaction version as defined by the sender. Intended for &amp;quot;replacement&amp;quot; of transactions when information is updated before inclusion into a block.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The OutPoint structure consists of the following fields:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash || char[32] || The hash of the referenced transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || index || uint32_t || The index of the specific output in the transaction. The first output is 0, etc.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The Script structure consists of a series of pieces of information and operations related to the value of the transaction.&lt;br /&gt;
&lt;br /&gt;
(Structure to be expanded in the future… see script.h and script.cpp and [[Script]] for more information)&lt;br /&gt;
&lt;br /&gt;
The TxOut structure consists of the following fields:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 8 || value || uint64_t || Transaction Value&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || pk_script length || var_int || Length of the pk_script&lt;br /&gt;
|-&lt;br /&gt;
| ? || pk_script || uchar[] || Usually contains the public key as a Bitcoin script setting up conditions to claim this output.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Example &#039;&#039;tx&#039;&#039; message:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
000000	F9 BE B4 D9 74 78 00 00  00 00 00 00 00 00 00 00   ....tx..........&lt;br /&gt;
000010	02 01 00 00 E2 93 CD BE  01 00 00 00 01 6D BD DB   .............m..&lt;br /&gt;
000020	08 5B 1D 8A F7 51 84 F0  BC 01 FA D5 8D 12 66 E9   .[...Q........f.&lt;br /&gt;
000030	B6 3B 50 88 19 90 E4 B4  0D 6A EE 36 29 00 00 00   .;P......j.6)...&lt;br /&gt;
000040	00 8B 48 30 45 02 21 00  F3 58 1E 19 72 AE 8A C7   ..H0E.!..X..r...&lt;br /&gt;
000050	C7 36 7A 7A 25 3B C1 13  52 23 AD B9 A4 68 BB 3A   .6zz%;..R#...h.:&lt;br /&gt;
000060	59 23 3F 45 BC 57 83 80  02 20 59 AF 01 CA 17 D0   Y#?E.W... Y.....&lt;br /&gt;
000070	0E 41 83 7A 1D 58 E9 7A  A3 1B AE 58 4E DE C2 8D   .A.z.X.z...XN...&lt;br /&gt;
000080	35 BD 96 92 36 90 91 3B  AE 9A 01 41 04 9C 02 BF   5...6..;...A....&lt;br /&gt;
000090	C9 7E F2 36 CE 6D 8F E5  D9 40 13 C7 21 E9 15 98   .~.6.m...@..!...&lt;br /&gt;
0000A0	2A CD 2B 12 B6 5D 9B 7D  59 E2 0A 84 20 05 F8 FC   *.+..].}Y... ...&lt;br /&gt;
0000B0	4E 02 53 2E 87 3D 37 B9  6F 09 D6 D4 51 1A DA 8F   N.S..=7.o...Q...&lt;br /&gt;
0000C0	14 04 2F 46 61 4A 4C 70  C0 F1 4B EF F5 FF FF FF   ../FaJLp..K.....&lt;br /&gt;
0000D0	FF 02 40 4B 4C 00 00 00  00 00 19 76 A9 14 1A A0   ..@KL......v....&lt;br /&gt;
0000E0	CD 1C BE A6 E7 45 8A 7A  BA D5 12 A9 D9 EA 1A FB   .....E.z........&lt;br /&gt;
0000F0	22 5E 88 AC 80 FA E9 C7  00 00 00 00 19 76 A9 14   &amp;quot;^...........v..&lt;br /&gt;
000100	0E AB 5B EA 43 6A 04 84  CF AB 12 48 5E FD A0 B7   ..[.Cj.....H^...&lt;br /&gt;
000110	8B 4E CC 52 88 AC 00 00  00 00                     .N.R......&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Message header:&lt;br /&gt;
 F9 BE B4 D9                                       - main network magic bytes&lt;br /&gt;
 74 78 00 00 00 00 00 00 00 00 00 00               - &amp;quot;tx&amp;quot; command&lt;br /&gt;
 02 01 00 00                                       - payload is 258 bytes long&lt;br /&gt;
 E2 93 CD BE                                       - checksum of payload&lt;br /&gt;
&lt;br /&gt;
Transaction:&lt;br /&gt;
 01 00 00 00                                       - version&lt;br /&gt;
&lt;br /&gt;
Inputs:&lt;br /&gt;
 01                                                - number of transaction inputs&lt;br /&gt;
&lt;br /&gt;
Input 1:&lt;br /&gt;
 6D BD DB 08 5B 1D 8A F7  51 84 F0 BC 01 FA D5 8D  - previous output (outpoint)&lt;br /&gt;
 12 66 E9 B6 3B 50 88 19  90 E4 B4 0D 6A EE 36 29&lt;br /&gt;
 00 00 00 00&lt;br /&gt;
&lt;br /&gt;
 8B                                                - script is 139 bytes long&lt;br /&gt;
&lt;br /&gt;
 48 30 45 02 21 00 F3 58  1E 19 72 AE 8A C7 C7 36  - signature script (scriptSig)&lt;br /&gt;
 7A 7A 25 3B C1 13 52 23  AD B9 A4 68 BB 3A 59 23&lt;br /&gt;
 3F 45 BC 57 83 80 02 20  59 AF 01 CA 17 D0 0E 41&lt;br /&gt;
 83 7A 1D 58 E9 7A A3 1B  AE 58 4E DE C2 8D 35 BD&lt;br /&gt;
 96 92 36 90 91 3B AE 9A  01 41 04 9C 02 BF C9 7E&lt;br /&gt;
 F2 36 CE 6D 8F E5 D9 40  13 C7 21 E9 15 98 2A CD&lt;br /&gt;
 2B 12 B6 5D 9B 7D 59 E2  0A 84 20 05 F8 FC 4E 02&lt;br /&gt;
 53 2E 87 3D 37 B9 6F 09  D6 D4 51 1A DA 8F 14 04&lt;br /&gt;
 2F 46 61 4A 4C 70 C0 F1  4B EF F5&lt;br /&gt;
&lt;br /&gt;
 FF FF FF FF                                       - sequence&lt;br /&gt;
&lt;br /&gt;
Outputs:&lt;br /&gt;
 02                                                - 2 Output Transactions&lt;br /&gt;
&lt;br /&gt;
Output 1:&lt;br /&gt;
 40 4B 4C 00 00 00 00 00                           - 0.05 BTC (5000000)&lt;br /&gt;
 19                                                - pk_script is 25 bytes long&lt;br /&gt;
&lt;br /&gt;
 76 A9 14 1A A0 CD 1C BE  A6 E7 45 8A 7A BA D5 12  - pk_script&lt;br /&gt;
 A9 D9 EA 1A FB 22 5E 88  AC&lt;br /&gt;
&lt;br /&gt;
Output 2:&lt;br /&gt;
 80 FA E9 C7 00 00 00 00                           - 33.54 BTC (3354000000)&lt;br /&gt;
 19                                                - pk_script is 25 bytes long&lt;br /&gt;
&lt;br /&gt;
 76 A9 14 0E AB 5B EA 43  6A 04 84 CF AB 12 48 5E  - pk_script&lt;br /&gt;
 FD A0 B7 8B 4E CC 52 88  AC&lt;br /&gt;
&lt;br /&gt;
Locktime:&lt;br /&gt;
 00 00 00 00                                       - lock time&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== block ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;block&#039;&#039;&#039; message is sent in response to a getdata message which requests transaction information from a block hash.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || Block version information, based upon the software version creating this block&lt;br /&gt;
|-&lt;br /&gt;
| 32 || prev_block || char[32] || The hash value of the previous block this particular block references&lt;br /&gt;
|-&lt;br /&gt;
| 32 || merkle_root || char[32] || The reference to a Merkle tree collection which is a hash of all transactions related to this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || timestamp || uint32_t || A unix timestamp recording when this block was created (Currently limited to dates before the year 2106!)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bits || uint32_t || The calculated [[Difficulty|difficulty target]] being used for this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nonce || uint32_t || The nonce used to generate this block… to allow variations of the header and compute different hashes&lt;br /&gt;
|-&lt;br /&gt;
| ? || txn_count || var_int || Number of transaction entries&lt;br /&gt;
|-&lt;br /&gt;
| ? || txns || tx[] || Block transactions, in format of &amp;quot;tx&amp;quot; command&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The SHA256 hash that identifies each block (and which must have a run of 0 bits) is calculated from the first 6 fields of this structure (version, prev_block, merkle_root, timestamp, bits, nonce, and standard SHA256 padding, making two 64-byte chunks in all) and &#039;&#039;not&#039;&#039; from the complete block. To calculate the hash, only two chunks need to be processed by the SHA256 algorithm. Since the &#039;&#039;nonce&#039;&#039; field is in the second chunk, the first chunk stays constant during mining and therefore only the second chunk needs to be processed. However, a Bitcoin hash is the hash of the hash, so two SHA256 rounds are needed for each mining iteration.&lt;br /&gt;
See [[Block hashing algorithm]] for details and an example.&lt;br /&gt;
&lt;br /&gt;
=== headers ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;headers&#039;&#039; packet returns block headers in response to a &#039;&#039;getheaders&#039;&#039; packet. &lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || count || var_int || Number of block headers&lt;br /&gt;
|-&lt;br /&gt;
| 77x? || headers || block_header[] || Block headers&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== getaddr ===&lt;br /&gt;
&lt;br /&gt;
The getaddr message sends a request to a node asking for information about known active peers to help with identifying potential nodes in the network. The response to receiving this message is to transmit an addr message with one or more peers from a database of known active peers. The typical presumption is that a node is likely to be active if it has been sending a message within the last three hours.&lt;br /&gt;
&lt;br /&gt;
No additional data is transmitted with this message.&lt;br /&gt;
&lt;br /&gt;
=== checkorder ===&lt;br /&gt;
&lt;br /&gt;
This message is used for [[IP Transactions]], to ask the peer if it accepts such transactions and allow it to look at the content of the order.&lt;br /&gt;
&lt;br /&gt;
It contains a CWalletTx object&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;| Fields from CMerkleTx&lt;br /&gt;
|-&lt;br /&gt;
| ? || hashBlock&lt;br /&gt;
|-&lt;br /&gt;
| ? || vMerkleBranch&lt;br /&gt;
|-&lt;br /&gt;
| ? || nIndex&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;| Fields from CWalletTx&lt;br /&gt;
|-&lt;br /&gt;
| ? || vtxPrev&lt;br /&gt;
|-&lt;br /&gt;
| ? || mapValue&lt;br /&gt;
|-&lt;br /&gt;
| ? || vOrderForm&lt;br /&gt;
|-&lt;br /&gt;
| ? || fTimeReceivedIsTxTime&lt;br /&gt;
|-&lt;br /&gt;
| ? || nTimeReceived&lt;br /&gt;
|-&lt;br /&gt;
| ? || fFromMe&lt;br /&gt;
|-&lt;br /&gt;
| ? || fSpent&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== submitorder ===&lt;br /&gt;
&lt;br /&gt;
Confirms an order has been submitted. &lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash || char[32] || Hash of the transaction&lt;br /&gt;
|-&lt;br /&gt;
| ? || wallet_entry || CWalletTx || Same payload as checkorder&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== reply ===&lt;br /&gt;
&lt;br /&gt;
Generic reply for [[IP Transactions]]&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || reply || uint32_t || reply code&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Possible values:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || SUCCESS || The IP Transaction can proceed (&#039;&#039;checkorder&#039;&#039;), or has been accepted (&#039;&#039;submitorder&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || WALLET_ERROR || AcceptWalletTransaction() failed&lt;br /&gt;
|-&lt;br /&gt;
| 2 || DENIED || IP Transactions are not accepted by this node&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ping ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;ping&#039;&#039; message is sent primarily to confirm that the TCP/IP connection is still valid. An error in transmission is presumed to be a closed connection and the address is removed as a current peer. No reply is expected as a result of this message being sent nor any sort of action expected on the part of a client when it is used.&lt;br /&gt;
&lt;br /&gt;
=== alert ===&lt;br /&gt;
&lt;br /&gt;
An &#039;&#039;&#039;alert&#039;&#039;&#039; is sent between nodes to send a general notification message throughout the network. If the alert can be confirmed with the signature as having come from the the core development group of the Bitcoin software, the message is suggested to be displayed for end-users. Attempts to perform transactions, particularly automated transactions through the client, are suggested to be halted. The text in the Message string should be relayed to log files and any user interfaces.&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || message || var_str || System message which is coded to convey some information to all nodes in the network&lt;br /&gt;
|-&lt;br /&gt;
| ? || signature || var_str || A signature which can be confirmed with a public key verifying that it is Satoshi (the originator of Bitcoins) who has &amp;quot;authorized&amp;quot; or created the message&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The signature is to be compared to this ECDSA public key:&lt;br /&gt;
&lt;br /&gt;
 04fc9702847840aaf195de8442ebecedf5b095cdbb9bc716bda9110971b28a49e0ead8564ff0db22209e0374782c093bb899692d524e9d6a6956e7c5ecbcd68284&lt;br /&gt;
 (hash) 1AGRxqDa5WjUKBwHB9XYEjmkv1ucoUUy1s&lt;br /&gt;
&lt;br /&gt;
Source: [http://www.bitcoin.org/smf/index.php?topic=898.0]&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
See [[script]].&lt;br /&gt;
&lt;br /&gt;
== Wireshark dissector ==&lt;br /&gt;
A dissector for wireshark is being developed at https://github.com/blueCommand/bitcoin-dissector&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Network]]&lt;br /&gt;
* [[Protocol rules]]&lt;br /&gt;
[[zh-cn:协议说明]]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category_talk:Clients&amp;diff=11698</id>
		<title>Category talk:Clients</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category_talk:Clients&amp;diff=11698"/>
		<updated>2011-06-25T23:18:23Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a lot of software that does not fit the definition &amp;quot;Client&amp;quot; as given on the top of the page. They should be moved to a different category.[[User:Prof7bit|Prof7bit]] 11:46, 25 June 2011 (GMT)&lt;br /&gt;
:Done :-) [[User:Prof7bit|Prof7bit]]&lt;br /&gt;
*Except that this isn&#039;t the definition used in common-speak. To most people, a &amp;quot;frontend&amp;quot; (more often called a &amp;quot;user interface&amp;quot;) is the client. The contents of this category should be split between Nodes (which implement at least the p2p protocol) and Wallets (which implement at least the wallet management). See [[Infrastructure]] for an overview. --[[User:Luke-jr|Luke-jr]] 15:11, 25 June 2011 (GMT)&lt;br /&gt;
**Since none of the other categories was linked from the software category and the client page existed already since January I asssumed it would be ok to follow the description of this client category (&amp;quot;downloads the block chain etc..&amp;quot;), leave it as it was and instead create the aditional category &amp;quot;frontend&amp;quot; (which can be an API binding or a complete User interface). My only intention was to remove a bit of the chaos, if the term &amp;quot;client&amp;quot; were not already used by this old category page i would have probably come up with a slightly different naming. Maybe it would be better to completely remove the ambiguous &amp;quot;client&amp;quot; (which could be understood as the p2p-client and by *some* people also as the user interface) and instead always strictly only use &amp;quot;node&amp;quot; &amp;quot;User Interface&amp;quot; and &amp;quot;API-Binding&amp;quot; and avoid the word &amp;quot;client&amp;quot; altogether.&lt;br /&gt;
** regarding &amp;quot;Wallet&amp;quot; I am not sure whether this should be mixed into this client-server categorizing problem, it would create more confusion. (there is the user interacting with the wallet (wallet as an abstract concept) through the UI but there is also the node software (the bitcoin client &amp;lt;-- there it is again this word) using the keys in the physically existing wallet file to calculate the balance and to generate transactions) [[User:Prof7bit|Prof7bit]] 23:01, 25 June 2011 (GMT)&lt;br /&gt;
*** After thinking about it a while I think we are (or I am) already over-complicating it. The original problem I had when I saw the software listing (and the reason I started to edit) was simply to distinguesh between real p2p bitcoin protocol implementations and mere user interfaces. Therefore we should throw away this complex construct of nested categories and sub categories and not split hairs about ambiguous names and instead simply make 3 categories: (a) p2p node implementations, (b) user interfaces and (c) API bindings and on each of these category pages explain in plain english what they mean and what they do. [[User:Prof7bit|Prof7bit]] 23:16, 25 June 2011 (GMT)&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category_talk:Clients&amp;diff=11694</id>
		<title>Category talk:Clients</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category_talk:Clients&amp;diff=11694"/>
		<updated>2011-06-25T23:16:09Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a lot of software that does not fit the definition &amp;quot;Client&amp;quot; as given on the top of the page. They should be moved to a different category.[[User:Prof7bit|Prof7bit]] 11:46, 25 June 2011 (GMT)&lt;br /&gt;
:Done :-) [[User:Prof7bit|Prof7bit]]&lt;br /&gt;
*Except that this isn&#039;t the definition used in common-speak. To most people, a &amp;quot;frontend&amp;quot; (more often called a &amp;quot;user interface&amp;quot;) is the client. The contents of this category should be split between Nodes (which implement at least the p2p protocol) and Wallets (which implement at least the wallet management). See [[Infrastructure]] for an overview. --[[User:Luke-jr|Luke-jr]] 15:11, 25 June 2011 (GMT)&lt;br /&gt;
**Since none of the other categories was linked from the software category and the client page existed already since January I asssumed it would be ok to follow the description of this client category (&amp;quot;downloads the block chain etc..&amp;quot;), leave it as it was and instead create the aditional category &amp;quot;frontend&amp;quot; (which can be an API binding or a complete User interface). My only intention was to remove a bit of the chaos, if the term &amp;quot;client&amp;quot; were not already used by this old category page i would have probably come up with a slightly different naming. Maybe it would be better to completely remove the ambiguous &amp;quot;client&amp;quot; (which could be understood as the p2p-client and by *some* people also as the user interface) and instead always strictly only use &amp;quot;node&amp;quot; &amp;quot;User Interface&amp;quot; and &amp;quot;API-Binding&amp;quot; and avoid the word &amp;quot;client&amp;quot; altogether.&lt;br /&gt;
** regarding &amp;quot;Wallet&amp;quot; I am not sure whether this should be mixed into this client-server categorizing problem, it would create more confusion. (there is the user interacting with the wallet (wallet as an abstract concept) through the UI but there is also the node software (the bitcoin client &amp;lt;-- there it is again this word) using the keys in the physically existing wallet file to calculate the balance and to generate transactions) [[User:Prof7bit|Prof7bit]] 23:01, 25 June 2011 (GMT)&lt;br /&gt;
*** After thinking about it a while I think we are (or I am) already over-complicating it. The original problem I had when I saw the software listing (and the reason I started to edit) was simply to distinguesh between real p2p bitcoin protocolimplementations and mere user interfaces. Therefore we should throw away this complex construct of nested categories and not split hairs about ambiguous names and instead simply make 3 categories: (a) p2p-node software, (b) user interfaces and (c) API bindings and on each of these category pages explain in plain english what they mean and what they do. [[User:Prof7bit|Prof7bit]] 23:16, 25 June 2011 (GMT)&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category_talk:Clients&amp;diff=11685</id>
		<title>Category talk:Clients</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category_talk:Clients&amp;diff=11685"/>
		<updated>2011-06-25T23:01:46Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a lot of software that does not fit the definition &amp;quot;Client&amp;quot; as given on the top of the page. They should be moved to a different category.[[User:Prof7bit|Prof7bit]] 11:46, 25 June 2011 (GMT)&lt;br /&gt;
:Done :-) [[User:Prof7bit|Prof7bit]]&lt;br /&gt;
*Except that this isn&#039;t the definition used in common-speak. To most people, a &amp;quot;frontend&amp;quot; (more often called a &amp;quot;user interface&amp;quot;) is the client. The contents of this category should be split between Nodes (which implement at least the p2p protocol) and Wallets (which implement at least the wallet management). See [[Infrastructure]] for an overview. --[[User:Luke-jr|Luke-jr]] 15:11, 25 June 2011 (GMT)&lt;br /&gt;
**Since none of the other categories was linked from the software category and the client page existed already since January I asssumed it would be ok to follow the description of this client category (&amp;quot;downloads the block chain etc..&amp;quot;), leave it as it was and instead create the aditional category &amp;quot;frontend&amp;quot; (which can be an API binding or a complete User interface). My only intention was to remove a bit of the chaos, if the term &amp;quot;client&amp;quot; were not already used by this old category page i would have probably come up with a slightly different naming. Maybe it would be better to completely remove the ambiguous &amp;quot;client&amp;quot; (which could be understood as the p2p-client and by *some* people also as the user interface) and instead always strictly only use &amp;quot;node&amp;quot; &amp;quot;User Interface&amp;quot; and &amp;quot;API-Binding&amp;quot; and avoid the word &amp;quot;client&amp;quot; altogether.&lt;br /&gt;
** regarding &amp;quot;Wallet&amp;quot; I am not sure whether this should be mixed into this client-server categorizing problem, it would create more confusion. (there is the user interacting with the wallet (wallet as an abstract concept) through the UI but there is also the node software (the bitcoin client &amp;lt;-- there it is again this word) using the keys in the physically existing wallet file to calculate the balance and to generate transactions) [[User:Prof7bit|Prof7bit]] 23:01, 25 June 2011 (GMT)&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category:User_Interfaces&amp;diff=11677</id>
		<title>Category:User Interfaces</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category:User_Interfaces&amp;diff=11677"/>
		<updated>2011-06-25T22:34:19Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A user interface is what the end-user sees and interacts with. Some clients like the original bitcoin client already have their own user interface built in but alternative user interfaces with more sophisticated features can optionally be used to control the client.&lt;br /&gt;
&lt;br /&gt;
Technically they connect to the running client (which can even run on a different computer) via the JSON-RPC protocol and fall into the category [[:Category:Frontends|Frontends]] together with the various available [[:Category:API Bindings|API Bindings]] for different programming langauges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Frontends]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category_talk:Nodes&amp;diff=11670</id>
		<title>Category talk:Nodes</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category_talk:Nodes&amp;diff=11670"/>
		<updated>2011-06-25T21:56:48Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: Created page with &amp;quot;Now there is redundancy. This category &amp;quot;node&amp;quot; is exactly the same as the category &amp;quot;client&amp;quot;  I would suggest the following structure: * software ** clients (same as &amp;quot;nodes&amp;quot;) ** fr...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Now there is redundancy. This category &amp;quot;node&amp;quot; is exactly the same as the category &amp;quot;client&amp;quot;&lt;br /&gt;
&lt;br /&gt;
I would suggest the following structure:&lt;br /&gt;
* software&lt;br /&gt;
** clients (same as &amp;quot;nodes&amp;quot;)&lt;br /&gt;
** frontends (divided in two subcategories)&lt;br /&gt;
*** User interfaces&lt;br /&gt;
*** API Bindings&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category:API_Bindings&amp;diff=11668</id>
		<title>Category:API Bindings</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category:API_Bindings&amp;diff=11668"/>
		<updated>2011-06-25T21:45:04Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: Created page with &amp;quot;Category:Frontends&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Frontends]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category:User_Interfaces&amp;diff=11667</id>
		<title>Category:User Interfaces</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category:User_Interfaces&amp;diff=11667"/>
		<updated>2011-06-25T21:42:40Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A user interface is what the end-user sees and interacts with. It interfaces with a [[:Category:Wallets|wallet]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Frontends]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category_talk:Clients&amp;diff=11601</id>
		<title>Category talk:Clients</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category_talk:Clients&amp;diff=11601"/>
		<updated>2011-06-25T12:55:46Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a lot of software that does not fit the definition &amp;quot;Client&amp;quot; as given on the top of the page. They should be moved to a different category.[[User:Prof7bit|Prof7bit]] 11:46, 25 June 2011 (GMT)&lt;br /&gt;
:Done :-) [[User:Prof7bit|Prof7bit]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Template:MainPage_Topics&amp;diff=11600</id>
		<title>Template:MainPage Topics</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Template:MainPage_Topics&amp;diff=11600"/>
		<updated>2011-06-25T12:53:09Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
First table is for tutorials. Left column = pages written for end users. Right column = pages for developers.&lt;br /&gt;
Second table is for categories.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;background-color: inherit;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; |&lt;br /&gt;
* [[Introduction]]&lt;br /&gt;
* [[Getting started]]&lt;br /&gt;
* [[Securing your wallet]]&lt;br /&gt;
* [[Secure Trading|Best practices for traders]]&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; |&lt;br /&gt;
* [[PHP developer intro]]&lt;br /&gt;
* [[API reference (JSON-RPC)]]&lt;br /&gt;
* [[Protocol specification]]&lt;br /&gt;
* [[Myths]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;background-color: inherit;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[:Category:Software|Software]]&lt;br /&gt;
* [[:Category:Mining|Mining]]&lt;br /&gt;
* [[:Category:Exchanges|Exchanges]]&lt;br /&gt;
* [[:Category:Directories|Local Directories]]&lt;br /&gt;
* [[Press|Press coverage]]&lt;br /&gt;
* [[:Category:Marketing|Marketing resources]]&lt;br /&gt;
|&lt;br /&gt;
* [[:Category:Technical|Technical articles]]&lt;br /&gt;
* [[:Category:Clients|Clients]]&lt;br /&gt;
* [[:Category:Frontends|Frontends]]&lt;br /&gt;
* [[:Category:Economics|Economics]]&lt;br /&gt;
* [[Trade|Bitcoin-accepting sites]]&lt;br /&gt;
* [[Donation-accepting_organizations_and_projects|Donation-accepting sites]]&lt;br /&gt;
* [[Meetups]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot; class=&amp;quot;noprint&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[{{fullurl:Template:MainPage_Topics|action=edit}} &#039;&#039;&#039;Edit&#039;&#039;&#039;]&amp;lt;/span&amp;gt; &amp;amp;ndash; &#039;&#039;&#039;[[Special:Categories|See More]]&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Template:MainPage_Topics&amp;diff=11599</id>
		<title>Template:MainPage Topics</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Template:MainPage_Topics&amp;diff=11599"/>
		<updated>2011-06-25T12:51:47Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
First table is for tutorials. Left column = pages written for end users. Right column = pages for developers.&lt;br /&gt;
Second table is for categories.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;background-color: inherit;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; |&lt;br /&gt;
* [[Introduction]]&lt;br /&gt;
* [[Getting started]]&lt;br /&gt;
* [[Securing your wallet]]&lt;br /&gt;
* [[Secure Trading|Best practices for traders]]&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; |&lt;br /&gt;
* [[PHP developer intro]]&lt;br /&gt;
* [[API reference (JSON-RPC)]]&lt;br /&gt;
* [[Protocol specification]]&lt;br /&gt;
* [[Myths]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;background-color: inherit;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[:Category:Software|Software]]&lt;br /&gt;
* [[:Category:Mining|Mining]]&lt;br /&gt;
* [[:Category:Exchanges|Exchanges]]&lt;br /&gt;
* [[:Category:Directories|Local Directories]]&lt;br /&gt;
* [[Press|Press coverage]]&lt;br /&gt;
* [[:Category:Marketing|Marketing resources]]&lt;br /&gt;
|&lt;br /&gt;
* [[:Category:Technical|Technical articles]]&lt;br /&gt;
* [[:Category:Software|Software]]&lt;br /&gt;
* [[:Category:Economics|Economics]]&lt;br /&gt;
* [[Trade|Bitcoin-accepting sites]]&lt;br /&gt;
* [[Donation-accepting_organizations_and_projects|Donation-accepting sites]]&lt;br /&gt;
* [[Meetups]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot; class=&amp;quot;noprint&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[{{fullurl:Template:MainPage_Topics|action=edit}} &#039;&#039;&#039;Edit&#039;&#039;&#039;]&amp;lt;/span&amp;gt; &amp;amp;ndash; &#039;&#039;&#039;[[Special:Categories|See More]]&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category:Software&amp;diff=11598</id>
		<title>Category:Software</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category:Software&amp;diff=11598"/>
		<updated>2011-06-25T12:47:48Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Software that is related to Bitcoin.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Clients|Clients]]&lt;br /&gt;
* [[:Category:Frontends|Frontends]]&lt;br /&gt;
* [[:Category:Developer|Developer]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Main category]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category:Frontends&amp;diff=11597</id>
		<title>Category:Frontends</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category:Frontends&amp;diff=11597"/>
		<updated>2011-06-25T12:47:05Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A frontend connects to a running [[:Category:Clients|client]] (for example via JSON-RPC) to provide a user interface for it, it does not implement the bitcoin protocol itself.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[API_reference_(JSON-RPC)]]&lt;br /&gt;
* [[:Category:Clients|Clients]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category:Clients&amp;diff=11596</id>
		<title>Category:Clients</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category:Clients&amp;diff=11596"/>
		<updated>2011-06-25T12:45:16Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Bitcoin clients&#039;&#039;&#039; are software that can connect to the network (implement the p2p protocol), download the [[blockchain]], manages wallets, and send or receive bitcoins, these clients intend to be alternatives to the original Bitcoin client.&lt;br /&gt;
&lt;br /&gt;
Software or API wrappers that merely connects to an already running bitcoind to provide an alternative user interface or language binding is found in the category [[:Category:Frontends|Frontends]].&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Protocol rules]]&lt;br /&gt;
* [[:Category:Frontends|Frontends]]&lt;br /&gt;
&lt;br /&gt;
[[fr:Catégorie:Clients Bitcoin]]&lt;br /&gt;
[[de:Kategorie:Client-Anwendungen]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category:Clients&amp;diff=11595</id>
		<title>Category:Clients</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category:Clients&amp;diff=11595"/>
		<updated>2011-06-25T12:43:46Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Bitcoin clients&#039;&#039;&#039; are software that can connect to the network (implement the p2p protocol), download the [[blockchain]], manages wallets, and send or receive bitcoins, these clients intend to be alternatives to the original Bitcoin client.&lt;br /&gt;
&lt;br /&gt;
Software or API wrappers that merely connects to an already running bitcoind to provide an alternative user interface or language binding is found in the category [[:Category:Frontends|Frontends]].&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Protocol rules]]&lt;br /&gt;
* [[:Category:Frontends|Frontends]]&lt;br /&gt;
&lt;br /&gt;
[[fr:Catégorie:Clients Bitcoin]]&lt;br /&gt;
[[de:Kategorie:Client-Anwendungen]]&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Main category]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category_talk:Software&amp;diff=11594</id>
		<title>Category talk:Software</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category_talk:Software&amp;diff=11594"/>
		<updated>2011-06-25T12:29:29Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== different system of categories ==&lt;br /&gt;
&lt;br /&gt;
It would be desirable to have the bitcoin clients and other software grouped in the following categories:&lt;br /&gt;
* JSON clients for one&#039;s own bitcoind&lt;br /&gt;
* full featured bitcoin p2p implementation (full replacement for the official client)&lt;br /&gt;
* partial / minimal / &amp;quot;thin&amp;quot; implementation of p2p protocol (something like bitcoinj for example)&lt;br /&gt;
&lt;br /&gt;
and maybe at least 3 words of description behind each link in the list to avoid clicking of dozens of links only to find out what category they are in. [[User:Prof7bit|Prof7bit]] 11:41, 25 June 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
:Proper categorizing done :-) [[User:Prof7bit|Prof7bit]] 12:29, 25 June 2011 (GMT)&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category:Frontends&amp;diff=11593</id>
		<title>Category:Frontends</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category:Frontends&amp;diff=11593"/>
		<updated>2011-06-25T12:25:58Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A frontend connects to a running [[:Category:Clients|client]] (for example via JSON-RPC) to provide a user interface for it, it does not implement the bitcoin protocol itself.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[API_reference_(JSON-RPC)]]&lt;br /&gt;
* [[:Category:Clients|Clients]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Main category]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category:Frontends&amp;diff=11592</id>
		<title>Category:Frontends</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category:Frontends&amp;diff=11592"/>
		<updated>2011-06-25T12:20:24Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A frontend connects to a running [[:Category:Clients|client]] (for example via JSON-RPC) to provide a user interface for it, it does not implement the bitcoin protocol itself.&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Main category]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category:Clients&amp;diff=11591</id>
		<title>Category:Clients</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category:Clients&amp;diff=11591"/>
		<updated>2011-06-25T12:18:53Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Bitcoin clients&#039;&#039;&#039; are software that can connect to the network, download the [[blockchain]], manages wallets, and send or receive bitcoins.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Protocol rules]]&lt;br /&gt;
* [[:Category:Frontends|Frontends]]&lt;br /&gt;
&lt;br /&gt;
[[fr:Catégorie:Clients Bitcoin]]&lt;br /&gt;
[[de:Kategorie:Client-Anwendungen]]&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Main category]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category:Frontends&amp;diff=11590</id>
		<title>Category:Frontends</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category:Frontends&amp;diff=11590"/>
		<updated>2011-06-25T12:15:58Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &#039;&#039;&#039;frontend&#039;&#039;&#039; connects to a running [[:Category:Clients|client]] (for example via JSON-RPC) to provide an alternative user interface for it or wrap it into an API usable with a different programming language, it does not implement the bitcoin p2p protocol itself.&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category:Clients&amp;diff=11589</id>
		<title>Category:Clients</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category:Clients&amp;diff=11589"/>
		<updated>2011-06-25T12:13:54Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Bitcoin clients&#039;&#039;&#039; are software that can connect to the network, download the [[blockchain]], manages wallets, and send or receive bitcoins.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Protocol rules]]&lt;br /&gt;
* [[:Category:Frontends|Frontends]]&lt;br /&gt;
&lt;br /&gt;
[[fr:Catégorie:Clients Bitcoin]]&lt;br /&gt;
[[de:Kategorie:Client-Anwendungen]]&lt;br /&gt;
[[Category:Main category]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Spesmilo&amp;diff=11588</id>
		<title>Spesmilo</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Spesmilo&amp;diff=11588"/>
		<updated>2011-06-25T12:10:50Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Spesmilo_english.png|thumb|400px|right]]&lt;br /&gt;
[[File:Spesmilo_esperanto.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
Free software PySide RPC client open to a diverse community.&lt;br /&gt;
Additional translations and features are welcome, no matter how obscure.&lt;br /&gt;
Principal authors: [[User:genjix|genjix]] and [[User:Luke-Jr|Luke-Jr]]&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Multilingual: American, Dutch, English, Esperanto, or French.&lt;br /&gt;
* Supports both Decimal and [[Tonal BitCoin|Tonal]] Bitcoins (and autodetection)&lt;br /&gt;
* Supports [[URI Scheme|bitcoin: URIs]]&lt;br /&gt;
* Can connect to remote JSON-RPC&lt;br /&gt;
* Can run local &amp;quot;embedded&amp;quot; bitcoind&lt;br /&gt;
&lt;br /&gt;
==Current version (0.0.1.beta1)==&lt;br /&gt;
* [http://luke.dashjr.org/programs/bitcoin/files/Spesmilo_0.0.1.beta1_i386_windows.exe Windows installer] -- Requires Administrator to install or you will get an error&lt;br /&gt;
* [http://luke.dashjr.org/programs/bitcoin/files/Spesmilo_0.0.1.beta1_source.tbz2 Source code]&lt;br /&gt;
&lt;br /&gt;
===Gentoo install===&lt;br /&gt;
 layman -o https://gitorious.org/bitcoin/gentoo/blobs/raw/master/overlay.xml -f -a bitcoin&lt;br /&gt;
 emerge -a spesmilo #(you may need to keyword some packages)&lt;br /&gt;
&lt;br /&gt;
===Quick start (from source)===&lt;br /&gt;
 # Dependencies: PySide, ImageMagick&lt;br /&gt;
 make local&lt;br /&gt;
 make&lt;br /&gt;
 ./spesmilo&lt;br /&gt;
&lt;br /&gt;
To install:&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
To install with bitcoin: URI support for KDE:&lt;br /&gt;
 make install KDESERVICEDIR=&amp;quot;/usr/share/kde4/services&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
{{ns:file}}:Spesmilo-tonal.png|Tonal preference&lt;br /&gt;
{{ns:file}}:Spesmilo-decimal.png|Decimal preference&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [https://www.bitcoin.org/smf/index.php?topic=3451.0 Forum thread]&lt;br /&gt;
* [http://gitorious.org/bitcoin/spesmilo Gitorious repository]&lt;br /&gt;
&lt;br /&gt;
[[Category:Frontends]]&lt;br /&gt;
[[Category:Free Software]]&lt;br /&gt;
[[Category:License/GPLv3]]&lt;br /&gt;
[[Category:Open Source]]&lt;br /&gt;
[[Category:Mobile]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Python_Bitcoinclient&amp;diff=11586</id>
		<title>Python Bitcoinclient</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Python_Bitcoinclient&amp;diff=11586"/>
		<updated>2011-06-25T12:08:40Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Python client for bitcoind’s JSON-RPC interface.&lt;br /&gt;
&lt;br /&gt;
This is free software licensed unter the terms of the GNU General Public License version 3 or later (GPLv3+).&lt;br /&gt;
&lt;br /&gt;
This client does not require any external dependencies, it uses the httplib and json modules from the Python standard library.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Original Bitcoin client]]&lt;br /&gt;
* [[Spesmilo]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [https://gitorious.org/bitcoinclient Bitcoinclient] project page at gitorious&lt;br /&gt;
&lt;br /&gt;
[[Category:Open Source]][[Category:GPLv3+]]&lt;br /&gt;
[[Category:Frontends]]&lt;br /&gt;
[[Category:Python]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Python_Bitcoin&amp;diff=11584</id>
		<title>Python Bitcoin</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Python_Bitcoin&amp;diff=11584"/>
		<updated>2011-06-25T12:07:37Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Facilitates high-level interaction with Bitcoin (based on JSON-RPC).&lt;br /&gt;
&lt;br /&gt;
This software is Open Source.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Original Bitcoin client]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [http://gitorious.com/python-bitcoin Python Bitcoin] project&lt;br /&gt;
&lt;br /&gt;
[[Category:Open Source]]&lt;br /&gt;
[[Category:Frontends]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Java_Bitcoin_Client&amp;diff=11583</id>
		<title>Java Bitcoin Client</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Java_Bitcoin_Client&amp;diff=11583"/>
		<updated>2011-06-25T12:06:03Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&#039;&#039;&#039;Java Bitcoin Client&#039;&#039;&#039; is a [[Bitcoin]] frontend / API written in java.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[BitCoinJ]]&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
*[http://sourceforge.net/projects/bitcoin-client/ Java Bitcoin Client sourceforge project page]&lt;br /&gt;
&lt;br /&gt;
[[Category:Frontends]]&lt;br /&gt;
[[Category:Free Software]]&lt;br /&gt;
[[Category:License/Apache]]&lt;br /&gt;
[[Category:Open Source]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Java_Bitcoin_Client&amp;diff=11582</id>
		<title>Java Bitcoin Client</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Java_Bitcoin_Client&amp;diff=11582"/>
		<updated>2011-06-25T12:05:03Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&#039;&#039;&#039;Java Bitcoin Client&#039;&#039;&#039; is a [[Bitcoin]] client written in java.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[BitCoinJ]]&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
*[http://sourceforge.net/projects/bitcoin-client/ Java Bitcoin Client sourceforge project page]&lt;br /&gt;
&lt;br /&gt;
[[Category:Frontends]]&lt;br /&gt;
[[Category:Free Software]]&lt;br /&gt;
[[Category:License/Apache]]&lt;br /&gt;
[[Category:Open Source]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoiner&amp;diff=11581</id>
		<title>Bitcoiner</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoiner&amp;diff=11581"/>
		<updated>2011-06-25T11:58:49Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An open source RPC client for Android that connects to a node on a PC via the RPC interface.&lt;br /&gt;
It allows transaction and balance overview as well as sending and receiving bitcoins using QR-codes.  Going by a similar name is [[Bitcoiners]], a job board a freelancers directory.&lt;br /&gt;
&lt;br /&gt;
For setting up the node to work with SSL please see [[Enabling_SSL_on_original_client_daemon]].&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* Bitcoiner on [https://market.android.com/details?id=net.lwi.bitcoiner Android market].&lt;br /&gt;
* [http://sourceforge.net/projects/bitcoiner/ Bitcoiner] project page on Sorceforge.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Frontends]]&lt;br /&gt;
[[Category:Free Software]]&lt;br /&gt;
[[Category:Open Source]]&lt;br /&gt;
[[Category:Mobile]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin-python&amp;diff=11580</id>
		<title>Bitcoin-python</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin-python&amp;diff=11580"/>
		<updated>2011-06-25T11:56:33Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Friendly bitcoin API binding for Python.&lt;br /&gt;
&lt;br /&gt;
bitcoin-python is a set of Python libraries that allows easy access to the bitcoin peer-to-peer cryptocurrency client API.&lt;br /&gt;
&lt;br /&gt;
This software is Open Source.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
Documentation can be found here, or in the source archive. It is built using Sphinx:&lt;br /&gt;
&lt;br /&gt;
http://toomanysecrets0.github.com/bitcoin-python/doc/&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Original Bitcoin client]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [https://github.com/toomanysecrets0/bitcoin-python bitcoin-python] project&lt;br /&gt;
&lt;br /&gt;
[[Category:Open Source]]&lt;br /&gt;
[[Category:Frontends]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin-js-remote&amp;diff=11579</id>
		<title>Bitcoin-js-remote</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin-js-remote&amp;diff=11579"/>
		<updated>2011-06-25T11:53:56Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A user interface for Bitcoin written in JavaScript.&lt;br /&gt;
&lt;br /&gt;
For SSL support a small server side script is included.&lt;br /&gt;
&lt;br /&gt;
This software is released under the MIT/X11 License.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [http://tcatm.github.com/bitcoin-js-remote Bitcoin-js-remote] website&lt;br /&gt;
* [http://github.com/tcatm/bitcoin-js-remote Bitcoin-js-remote] project page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Example of an Apache HTTPD Configuration for Bitcoin JS Remote==&lt;br /&gt;
[I am assuming a little knowledge about Apache httpd. You had better read on Apache httpd directives: http://httpd.apache.org/docs/2.2/mod/directives.html. Of course, this is only an example of many other configurations]&lt;br /&gt;
&lt;br /&gt;
Assuming your bitcoin.conf file includes:&lt;br /&gt;
  rpcuser=myuser&lt;br /&gt;
  rpcpassword=mypass&lt;br /&gt;
&lt;br /&gt;
First, generate a suitable file for Basic Authentification. See man htpasswd or execute&lt;br /&gt;
  htpasswd -b -c my_prefer_filename myuser mypass&lt;br /&gt;
&lt;br /&gt;
Set following Apache directives in the proper context, i.e. server or virtual host configuration:&lt;br /&gt;
  &amp;lt;Proxy http://127.0.0.1:8332&amp;gt;&lt;br /&gt;
    AuthType Basic&lt;br /&gt;
    AuthName &amp;quot;Bitcoin Access&amp;quot;&lt;br /&gt;
    AuthUserFile my_prefer_filename&lt;br /&gt;
    Require user myuser&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Allow from all&lt;br /&gt;
  &amp;lt;/Proxy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assuming you want to access Bitcoin JS Remote with http://mydomain/jbc&lt;br /&gt;
  Alias /jbc pathabs_to_bitcoin-js-remote&lt;br /&gt;
  ProxyPass /lbc/ http://127.0.0.1:8332/&lt;br /&gt;
  # ProxyPassReverse is not required because bitcoind talks pure&lt;br /&gt;
  # JSON, i.e no HTTP Headers with URIs are generated by bitcoind&lt;br /&gt;
  # ProxyPassReverse /lbc/ http://127.0.0.1:8332/&lt;br /&gt;
&lt;br /&gt;
Above ProxyPass directive is asuming you are set the RPC.url field to &amp;quot;/lbc/&amp;quot; into &amp;quot;settings.json&amp;quot; file, located in the bitcoin-js-remote directory. See the settings.json_sample file for proper syntax.&lt;br /&gt;
&lt;br /&gt;
A variety of configurations are feasible:&lt;br /&gt;
&lt;br /&gt;
  # If RPC.url is an absolute path (i.e. RPC.url : /lbc/),&lt;br /&gt;
  # bitcoind at 127.0.0.1 shall be accessed by http://mydomain/jbc/&lt;br /&gt;
  ProxyPass /lbc/ http://127.0.0.1:8332/&lt;br /&gt;
  #&lt;br /&gt;
  # If RPC.url is a relative path (i.e. RPC.url : lbc/),&lt;br /&gt;
  # bitcoind at 127.0.0.1 shall be accessed by http://mydomain/jbc/lbc/&lt;br /&gt;
  ProxyPass lbc/ http://127.0.0.1:8332/&lt;br /&gt;
  # &lt;br /&gt;
  # Apache can also proxy your access to any other IP by&lt;br /&gt;
  # accessing to http://mydomain/jbc&lt;br /&gt;
  ProxyPass /lbc/ http://www.worldbank.org:8332/&lt;br /&gt;
&lt;br /&gt;
Please, note you are *not* required to set into the settings.json file the pair rcpuser/rcppassword. The required header with Basic Authentication is automatically generated by Apache when proxing, thanks for the above Auth directives.&lt;br /&gt;
&lt;br /&gt;
Set RPC.user=rcpuser and RPC.password=rcppassword in the settings.json file if you are not able to configure your Apache webser; for instance, people using hosting instead of virtual or dedicated server. But, please, &#039;&#039;&#039;keep in mind&#039;&#039;&#039; settings.json file can be read by everybody: http://mydomain/jbc/settings.json&lt;br /&gt;
&lt;br /&gt;
That&#039;s all. Restart your Apache web server.&lt;br /&gt;
&lt;br /&gt;
=== Other interesting Apache directives: ===&lt;br /&gt;
&lt;br /&gt;
To redirect all HTTP to HTTPS (of course, you need a well-configured ssl site).&lt;br /&gt;
!!! SSL access &#039;&#039;&#039;is extremely recommended&#039;&#039;&#039; to protect your Bitcoin data.&lt;br /&gt;
  RewriteCond %{HTTPS} off&lt;br /&gt;
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}&lt;br /&gt;
&lt;br /&gt;
To avoid your log file from flooding&lt;br /&gt;
  SetEnvIf Request_URI &amp;quot;^/jbc/&amp;quot; dontlog&lt;br /&gt;
  SetEnvIf Request_URI &amp;quot;^/lbc/&amp;quot; dontlog&lt;br /&gt;
  CustomLog myfile.log combined env=!dontlog&lt;br /&gt;
&lt;br /&gt;
Finally, if you go in trouble, check proper access to bitcoin daemon with curl:&lt;br /&gt;
  curl --trace-time --trace-ascii - \&lt;br /&gt;
       --data-binary &#039;{&amp;quot;jsonrpc&amp;quot;: &amp;quot;1.0&amp;quot;, &amp;quot;id&amp;quot;:&amp;quot;curltest&amp;quot;, &amp;quot;method&amp;quot;: &amp;quot;getinfo&amp;quot;, &amp;quot;params&amp;quot;: [] }&#039; \&lt;br /&gt;
       --header &#039;content-type: text/plain;&#039;\&lt;br /&gt;
       http://myuser:mypass@127.0.0.1:8332/&lt;br /&gt;
&lt;br /&gt;
[[Category:Frontends]]&lt;br /&gt;
[[Category:Free Software]]&lt;br /&gt;
[[Category:License/MIT-X11]]&lt;br /&gt;
[[Category:Open Source]]&lt;br /&gt;
[[Category:Mobile]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category:Frontends&amp;diff=11578</id>
		<title>Category:Frontends</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category:Frontends&amp;diff=11578"/>
		<updated>2011-06-25T11:51:51Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: Created page with &amp;quot;A frontend connects to a running client (for example via JSON-RPC) to provide a user interface for it, it does not implement the bitcoin protocol itself.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A frontend connects to a running [[:Category:Clients|client]] (for example via JSON-RPC) to provide a user interface for it, it does not implement the bitcoin protocol itself.&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category:Software&amp;diff=11577</id>
		<title>Category:Software</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category:Software&amp;diff=11577"/>
		<updated>2011-06-25T11:48:38Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Software that is related to Bitcoin.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Clients|Clients]]&lt;br /&gt;
* [[:Category:Frontends|Frontends]]&lt;br /&gt;
* [[:Category:Developer|Developer]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category_talk:Clients&amp;diff=11576</id>
		<title>Category talk:Clients</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category_talk:Clients&amp;diff=11576"/>
		<updated>2011-06-25T11:46:33Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: Created page with &amp;quot;Here is a lot of software that does not fit the definition &amp;quot;Client&amp;quot; as given on the top of the page. They should be moved to a different category.~~~~&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a lot of software that does not fit the definition &amp;quot;Client&amp;quot; as given on the top of the page. They should be moved to a different category.[[User:Prof7bit|Prof7bit]] 11:46, 25 June 2011 (GMT)&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Category_talk:Software&amp;diff=11575</id>
		<title>Category talk:Software</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Category_talk:Software&amp;diff=11575"/>
		<updated>2011-06-25T11:41:31Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: different system of categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== different system of categories ==&lt;br /&gt;
&lt;br /&gt;
It would be desirable to have the bitcoin clients and other software grouped in the following categories:&lt;br /&gt;
* JSON clients for one&#039;s own bitcoind&lt;br /&gt;
* full featured bitcoin p2p implementation (full replacement for the official client)&lt;br /&gt;
* partial / minimal / &amp;quot;thin&amp;quot; implementation of p2p protocol (something like bitcoinj for example)&lt;br /&gt;
&lt;br /&gt;
and maybe at least 3 words of description behind each link in the list to avoid clicking of dozens of links only to find out what category they are in. [[User:Prof7bit|Prof7bit]] 11:41, 25 June 2011 (GMT)&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=User:Prof7bit&amp;diff=11574</id>
		<title>User:Prof7bit</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=User:Prof7bit&amp;diff=11574"/>
		<updated>2011-06-25T11:21:04Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: Created page with &amp;quot;Contributors Award participant: 19KoKbNzcRHQaB7JfikMzgBM6CprjRuhRW&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contributors Award participant: 19KoKbNzcRHQaB7JfikMzgBM6CprjRuhRW&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Donation-accepting_organizations_and_projects&amp;diff=11570</id>
		<title>Donation-accepting organizations and projects</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Donation-accepting_organizations_and_projects&amp;diff=11570"/>
		<updated>2011-06-25T10:37:33Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: added TorChat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a list of organizations that accept bitcoin donations.&lt;br /&gt;
Only notable donation-accepting sites should be added here.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Organization&lt;br /&gt;
! Purpose&lt;br /&gt;
! Donation Page&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.indiegogo.com/commonsense A Liberty Upgrade for America (IndieGoGo)]&lt;br /&gt;
|Join us as we reach 1.6 million Americans with a message of liberty!&lt;br /&gt;
|http://www.indiegogo.com/commonsense&lt;br /&gt;
|-&lt;br /&gt;
|[http://anapnea.org Anapnea]&lt;br /&gt;
|An open ethical shell network aiming to create a community with a spirit of productivity, learning and freedom, to give you a breath of fresh air. Operates an open Gentoo Linux shell network that is accessed daily by hundreds of ethical hackers, developers, designers and geeks around the world.&lt;br /&gt;
|[https://twitter.com/anapnea/status/78118988848185345 Bitcoin Donation Address]&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.anonnews.org/ Anonnews.org]&lt;br /&gt;
|Open news platform for Anonymous&lt;br /&gt;
|http://anonnews.org/bitcoin.html&lt;br /&gt;
|-&lt;br /&gt;
|[http://awesome.naquadah.org/ awesome]&lt;br /&gt;
|Window manager for X11&lt;br /&gt;
|http://awesome.naquadah.org/community/&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ezyorg.com/ Organizing &amp;amp; Planning Tool]&lt;br /&gt;
|Great tool to organize your next party or business meeting&lt;br /&gt;
|http://ezyorg.com/&lt;br /&gt;
|-|-&lt;br /&gt;
|[https://iplayernotifier.appspot.com/ BBC iPlayer Notifier]&lt;br /&gt;
|Email and Google Talk notification of new content available on BBC iPlayer&lt;br /&gt;
|https://iplayernotifier.appspot.com/&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.beatingdebt.org/ BeatingDebt.org]&lt;br /&gt;
|Teaching debt prevention by placing educational ads, supporting debt prevention groups, and providing online resources.&lt;br /&gt;
|http://www.beatingdebt.org/donate.php#BitCoinDonation&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.bitcharity.org/ BitCharity]&lt;br /&gt;
|Use Bitcoins to donate to your favorite charity&lt;br /&gt;
|http://www.bitcharity.org&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.bluetile.org Bluetile]&lt;br /&gt;
|Tiling window manager for GNOME&lt;br /&gt;
|http://www.bluetile.org/#development&lt;br /&gt;
|-&lt;br /&gt;
|[http://brmlab.cz/ Brmlab, hackerspace]&lt;br /&gt;
|The first hackerspace in the Czech Republic&lt;br /&gt;
|http://brmlab.cz/project/bitcoin&lt;br /&gt;
|-&lt;br /&gt;
|[http://c4ss.org/ Center for a Stateless Society]&lt;br /&gt;
|Builds public awareness of, and support for, market anarchism&lt;br /&gt;
|http://c4ss.org/support-the-center&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.bitcoinsreview.com Consumer - Merchant Trust Project]&lt;br /&gt;
|An initiative to increase trust between Consumer and Bitcoin Merchants. All proceeds go to the websites fund, which pays for various things such as web-hosting and advertisement.&lt;br /&gt;
|http://www.bitcoinsreview.com/donate/&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.degenernet.com/ Degenernet Radio]&lt;br /&gt;
|Online radio station founded in 2002 dedicated to promoting independent music from all genres.  Music available from [http://www.degenernet.com www.degenernet.com]and on the [http://apps.facebook.com/degenernet Degenernet Radio Facebook App].&lt;br /&gt;
|http://www.degenernet.com/donate.php&lt;br /&gt;
|-&lt;br /&gt;
|[http://opensource.doppelstern.com Doppelstern Antispam]&lt;br /&gt;
|Doppelstern Antispam signatures for ClamAV&lt;br /&gt;
|http://opensource.doppelstern.com&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.dosbox.com/ DOSBox]&lt;br /&gt;
|An x86 emulator with DOS&lt;br /&gt;
|http://www.dosbox.com/crew.php&lt;br /&gt;
|-&lt;br /&gt;
|[http://encyclopediadramatica.ch/Main_Page Encyclopedia Dramatica]&lt;br /&gt;
|4chan&#039;s Wikipedia &lt;br /&gt;
|http://encyclopediadramatica.ch/donate.php&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.erowid.org/ Erowid]&lt;br /&gt;
|Online library of information about psychoactive plants and chemicals and other topics on altered states of consciousness such as meditation and lucid dreaming.&lt;br /&gt;
|https://www.erowid.org/donations/donations_bitcoin.php&lt;br /&gt;
|-&lt;br /&gt;
|[http://eudemocracia.org/english.html Eudemocracia] NGO&lt;br /&gt;
|Dedicated to the creation of a modern form of government that combines these two concepts: direct democracy and internet.&lt;br /&gt;
|http://wiki.eudemocracia.org/en/donaciones&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.hayekinstitute.ca/ F.A. Hayek Institute of Canada]&lt;br /&gt;
|Study and promote Austrian Economics&lt;br /&gt;
|http://www.hayekinstitute.ca/home/index.php?option=com_content&amp;amp;view=article&amp;amp;id=54&amp;amp;Itemid=60&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.foo.be/forban/ Forban]&lt;br /&gt;
|Filesharing protocol for local area networks&lt;br /&gt;
|http://www.foo.be/forban/&lt;br /&gt;
|-&lt;br /&gt;
|[http://freedomboxfoundation.org FreedomBox Foundation]&lt;br /&gt;
|Non-profit turning small plug computers into personal servers that guard your privacy, anonymity and security.&lt;br /&gt;
|https://freedomboxfoundation.org/donate&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.fsf.org Free Software Foundation]&lt;br /&gt;
|Worldwide advocate for software freedom and host organization for the GNU Project.&lt;br /&gt;
|https://my.fsf.org/donate/other&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.freetalklive.com/ Free Talk Live]&lt;br /&gt;
|Help spread the message of liberty by donating to a liberty leaning nationally syndicated radio show!&lt;br /&gt;
|http://www.freetalklive.com/bitcoin&lt;br /&gt;
|-&lt;br /&gt;
|[http://freedomainradio.com/ Freedomain Radio]&lt;br /&gt;
|Online philosophical conversation about freedom, religion, the state, and the family&lt;br /&gt;
|http://board.freedomainradio.com/forums/t/30241.aspx&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.freehal.org/ FreeHAL]&lt;br /&gt;
|a self-learning artificial intelligence available as free software&lt;br /&gt;
|http://www.freehal.net/funds/?p=do&amp;amp;l=en&lt;br /&gt;
|-&lt;br /&gt;
|[http://privacyfoundation.de German Privacy Foundation]&lt;br /&gt;
|protecting privacy, manufacture and sell the CryptoStick (a smartcard on a usb stick)&lt;br /&gt;
|http://www.privacyfoundation.de/verein/spenden/&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.reddit.com/r/hackbloc HackBloc on Reddit]&lt;br /&gt;
|Hacktivism, Crypto-anarchy, Darknets.&lt;br /&gt;
|http://www.reddit.com/r/hackbloc&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.helplinux.ru Help Linux]&lt;br /&gt;
|Help Linux is the Russian volunteer project aimed to help people with linux. This projects helps anyone to find a skilled in some questions person and ask for help directly.&lt;br /&gt;
|http://helplinux.ourproject.org/wiki/about:start&lt;br /&gt;
|-&lt;br /&gt;
|[http://i2p2.de/ I2P Anonymous Network]&lt;br /&gt;
|Anonymising network similar to tor&lt;br /&gt;
|http://www.i2p2.de/donate.html&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.infinitypfm.org/ Infinity PFM]&lt;br /&gt;
|Free/open source personal finance application with Bitcoin support.&lt;br /&gt;
|http://www.infinitypfm.org/#donate&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.intercom.gs/ Intercom - Emergency Communications Division]&lt;br /&gt;
|We Build Censorship Resistant Phone and Communications Networks&lt;br /&gt;
|http://www.intercom.gs/support.html&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.partito-pirata.it/ Italian Pirate Party]&lt;br /&gt;
|Italian Pirate Party - Associazione Partito Pirata Italia&lt;br /&gt;
|http://www.partito-pirata.it/magazzino/payBTC.html&lt;br /&gt;
|-&lt;br /&gt;
|[http://lifeboat.com Lifeboat Foundation]&lt;br /&gt;
|The Lifeboat Foundation is a nonprofit nongovernmental organization dedicated to encouraging scientific advancements while helping humanity survive existential risks and possible misuse of increasingly powerful technologies, including genetic engineering, nanotechnology, and robotics/AI, as we move towards the Singularity.  (Currently offering to double all Bitcoin donations.)&lt;br /&gt;
|https://lifeboat.com/ex/summer.growth&lt;br /&gt;
|-&lt;br /&gt;
|[http://linuxoutlaws.com/ Linux Outlaws - we aim to misbehave]&lt;br /&gt;
|two pragmatic linux users talk about the latest developments in free and open software and culture &lt;br /&gt;
|http://linuxoutlaws.com/&lt;br /&gt;
|-&lt;br /&gt;
|[http://lorea.org/ Lorea]&lt;br /&gt;
|A distributed and federated nodal organization of entities working on integrating and pushing available free and open source technologies and networks, for social networking, social economy and autonomy of the people.&lt;br /&gt;
|https://n-1.cc/pg/pages/view/14888/&lt;br /&gt;
|-&lt;br /&gt;
|[http://biohackers.la/ Los Angeles Biohackers]&lt;br /&gt;
|Grass-roots biotechnology lab in downtown Los Angeles&lt;br /&gt;
|http://www.socal-diybio.org/Main_Page#Donate&lt;br /&gt;
|-&lt;br /&gt;
|[http://la.indymedia.org/ Los Angeles Indymedia]&lt;br /&gt;
|User-generated left-wing news.&lt;br /&gt;
|http://la.indymedia.org/&lt;br /&gt;
|-&lt;br /&gt;
|[http://love2d.org/ LÖVE]&lt;br /&gt;
|An open source 2D game engine.&lt;br /&gt;
|http://love2d.org/&lt;br /&gt;
|-&lt;br /&gt;
|[http://mars.radiome.me M.A.R.S. Radio Modern Alternative Rock Splendor ]&lt;br /&gt;
|M.A.R.S Radio is an online radio station playing 24/7/365 commercial free alternative rock at 192 Kbps. M.A.R.S. Radio is pleased to provide listeners FM+ audio quality. M.A.R.S. Radio is the first online music radio station to accept Bitcoin donations.&lt;br /&gt;
|http://radiome.me/&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/FellowTraveler/Open-Transactions/ Open Transactions]&lt;br /&gt;
|Easy-to-use, Financial Crypto and Digital Cash Library.&lt;br /&gt;
|https://github.com/FellowTraveler/Moneychanger&lt;br /&gt;
|-&lt;br /&gt;
|[http://opengameart.org/ OpenGameArt.org]&lt;br /&gt;
|Produces and hosts freely licensed art for use in open source games&lt;br /&gt;
|http://opengameart.org/content/donate-bitcoins&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.openwall.com Openwall Project]&lt;br /&gt;
|Development of information security related free software, information security research, publications, and community activities aimed at making existing free software safer to use.&lt;br /&gt;
|http://www.openwall.com/donations/&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.operationanonymous.org/ Operation Anonymous]&lt;br /&gt;
|Anonymous Political Group&lt;br /&gt;
|http://www.operationanonymous.org/&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.organicdesign.co.nz OrganicDesign]&lt;br /&gt;
|A group developing methods and tools to support open-source bottom-up peer-to-peer governance for the people!&lt;br /&gt;
|http://www.organicdesign.co.nz&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.liberallibertario.org Partido Liberal Libertario]&lt;br /&gt;
|Libertarian Party of Argentina&lt;br /&gt;
|http://www.liberallibertario.org/aportes&lt;br /&gt;
|-&lt;br /&gt;
|[http://pioneerone.tv/ Pioneer One]&lt;br /&gt;
|TV series funded purely through donations&lt;br /&gt;
|https://twitter.com/pioneeronetv/status/36119594439544832&lt;br /&gt;
|-&lt;br /&gt;
|[http://plankhead.com/ Plankhead]&lt;br /&gt;
|Free/open source media and arts organization&lt;br /&gt;
|http://plankhead.com/donate&lt;br /&gt;
|-&lt;br /&gt;
|[http://plaztika.com/?lang=en Plaztika]&lt;br /&gt;
|Non-profit website (only runs on donations) that supports emerging visual artists. If you&#039;re an artist, this could be your website!&lt;br /&gt;
|http://plaztika.com/Who-are-we&lt;br /&gt;
|-&lt;br /&gt;
|[https://privacybox.de/index.en.html PrivacyBox]&lt;br /&gt;
|System for anonymous and non-trackable contact forms&lt;br /&gt;
|https://privacybox.de/donations.en.html&lt;br /&gt;
|-&lt;br /&gt;
|[http://prometheusfusionperfection.com/ Prometheus Fusion Perfection]&lt;br /&gt;
|Open source nuclear fusion research&lt;br /&gt;
|http://prometheusfusionperfection.com/2011/02/04/bitcoin-fundraiser/&lt;br /&gt;
|-&lt;br /&gt;
|[http://queeky.com/ Queeky]&lt;br /&gt;
|an online drawing community with special drawing tools and creative users from all around the world&lt;br /&gt;
|http://www.queeky.com/content/support-queeky-and-donate&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.recycles.org/ Recycles.Org]&lt;br /&gt;
|Nonprofit Recycling and ReUse Network - Nationwide (USA) technology exchange clearinghouse for nonprofit organizations&lt;br /&gt;
|http://www.recycles.org/computer/donation/support/&lt;br /&gt;
|-&lt;br /&gt;
|[https://ripplepay.com/ Ripple]&lt;br /&gt;
|Payment system based on trust networks&lt;br /&gt;
|https://ripplepay.com/donate/&lt;br /&gt;
|-&lt;br /&gt;
| [https://riseup.net/ Riseup]&lt;br /&gt;
| Tech collective who aim to [https://help.riseup.net/en/about-us aid in the creation of a free society, (...) engaged in struggles against capitalism and other forms of oppression]&lt;br /&gt;
| https://help.riseup.net/en/donate#bitcoin&lt;br /&gt;
|-&lt;br /&gt;
|[http://rusinfo.cc/ RusInfo]&lt;br /&gt;
|Russian info agency&lt;br /&gt;
|http://rusinfo.cc/help&lt;br /&gt;
|-&lt;br /&gt;
|[http://singinst.org Singularity Institute]&lt;br /&gt;
|Artificial Intelligence&lt;br /&gt;
|http://singinst.org/donate&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.sparkleshare.org/ SparkleShare]&lt;br /&gt;
| A Free and Open Source host it yourself replacement for file syncing services like Dropbox. It uses the distributed version control system Git as a backend.&lt;br /&gt;
| [http://www.sparkleshare.org/support-us/ Bitcoin Donation Address]&lt;br /&gt;
|-&lt;br /&gt;
|[http://wiki.sugarlabs.org Sugar Labs]&lt;br /&gt;
|[http://wiki.sugarlabs.org/go/What_is_Sugar%3F Sugar] is a learning environment that reinvents how computers are used for education.&lt;br /&gt;
|http://wiki.sugarlabs.org/go/Donate&lt;br /&gt;
|-&lt;br /&gt;
|[http://gorod-solnca.org/ Sun City]&lt;br /&gt;
|Ukrainian centre for children in difficult circumstances&lt;br /&gt;
|http://sms.gorod-solnca.org/&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.symphonyofscience.com/ Symphony of Science]&lt;br /&gt;
|A musical project headed by John Boswell, to deliver scientific knowledge in musical form.&lt;br /&gt;
|http://www.symphonyofscience.com/&lt;br /&gt;
|-&lt;br /&gt;
|[http://tahoe-lafs.org/ Tahoe-LAFS]&lt;br /&gt;
|A distributed filesystem with funky redundancy properties&lt;br /&gt;
|http://tahoe-lafs.org/trac/tahoe-lafs/wiki/BitCoinPage&lt;br /&gt;
|-&lt;br /&gt;
|[http://tangorin.com Tangorin Japanese Dictionary]&lt;br /&gt;
|Tangorin is a free online Japanese dictionary in development since October 2007 by a former Japanology student. It makes use of files provided mainly by The Electronic Dictionary Research and Development Group established within the Faculty of Information Technology at Monash University, Australia.&lt;br /&gt;
|http://tangorin.com/bitcoin&lt;br /&gt;
|-&lt;br /&gt;
|[http://telecomix.org/ Telecomix]&lt;br /&gt;
|Internet freedom collective&lt;br /&gt;
|http://werebuild.eu/wiki/Donations&lt;br /&gt;
|-&lt;br /&gt;
|[http://theexperiments.com The Experiments]&lt;br /&gt;
|A rock / punk band who&#039;s music is free to download and licensed under the Creative Commons&lt;br /&gt;
|[http://theexperiments.com Bitcoin Donation Address]&lt;br /&gt;
|-&lt;br /&gt;
|[http://theicarusproject.net The Icarus Project]&lt;br /&gt;
|A mutual aid/peer support organization dedicated to radical mental health&lt;br /&gt;
|[http://theicarusproject.net/about-us/donate-to-the-icarus-project Bitcoin Donation Address]&lt;br /&gt;
|-&lt;br /&gt;
|[https://freenetproject.org/ The Freenet Project]&lt;br /&gt;
|The Free Network&lt;br /&gt;
|https://freenetproject.org/donate.html&lt;br /&gt;
|-&lt;br /&gt;
| [http://ThePythonGameBook.com ThePythonGameBook]&lt;br /&gt;
| An free creative-commons / GPL - licensed wikibook to learn open source game programming using the programming language Python.&lt;br /&gt;
| [http://thepythongamebook.com/en:help?&amp;amp;#donating_money Bitcoin Donation Address]&lt;br /&gt;
|-&lt;br /&gt;
|[http://torchat.googlecode.com/ TorChat]&lt;br /&gt;
|A serverless encrypted anonymous instant messenger running on top of the Tor network&lt;br /&gt;
|http://torchat.googlecode.com/&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.torservers.net/ Torservers.net]&lt;br /&gt;
|Runs [http://www.torproject.org/ Tor] relays and bridges&lt;br /&gt;
|https://www.torservers.net/donate.html#anonymous&lt;br /&gt;
|-&lt;br /&gt;
|[https://vaizard.org/ Vaizard institute]&lt;br /&gt;
| Backing people who want to make the world a better place by making their ideas real.&lt;br /&gt;
|https://vaizard.org/en/about/contacts/&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[http://wikileaks.org wikileaks]&lt;br /&gt;
| Whistleblower website&lt;br /&gt;
|http://wikileaks.org/support.html&lt;br /&gt;
|-&lt;br /&gt;
|[http://wlcentral.org/ WL Central]&lt;br /&gt;
|News, analysis and action related to wikileaks the famous website . Media and human rights organization covering Wikileaks news, corruption and human rights.&lt;br /&gt;
|http://wlcentral.org/q-a&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [http://witcoin.com/charities Charitable organizations] list on [[witcoin]]&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:Protocol_documentation&amp;diff=11540</id>
		<title>Talk:Protocol documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:Protocol_documentation&amp;diff=11540"/>
		<updated>2011-06-24T21:08:44Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: /* Proposing additional protocol messages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hexdumps =&lt;br /&gt;
I&#039;m adding some hexdumps of messages and data structures and descriptions of how these are interpreted in order to help others understand these protocol and data structures.  It&#039;s a bit redundant, so any ideas as to how to remove some of the redundancy while keeping the knowledge accessible are welcome (feel free to make the changes yourself!). -- [[User:X6763|X6763]]&lt;br /&gt;
&lt;br /&gt;
= Checksum wrong? =&lt;br /&gt;
Is the checksum in the addr sample correct?  Here&#039;s what I get using OpenSSL (sorry for long lines):&lt;br /&gt;
SHA256(&amp;quot;\x01\xe2\x15\x10\x4d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x0a\x00\x00\x01\x20\x8d&amp;quot;) = &lt;br /&gt;
d6 88 65 c8 20 61 d5 e2 54 52 b5 5b 52 17 98 b1 11 50 85 96 2e 49 e8 fd da b7 f4 fb a3 9c d8 2c&lt;br /&gt;
and SHA256 of that is&lt;br /&gt;
ed 52 39 9b 56 8e d8 d5 9a 83 72 9c 11 6f 87 d0 be f2 84 e9 98 f3 47 7c 98 61 16 9a b1 2e ed 5c&lt;br /&gt;
It could easily be I&#039;m using OpenSSL incorrectly, so wanted to get confirmation -- [[User:AndyParkins|AndyParkins]]&lt;br /&gt;
 - The checksum for &amp;quot;addr&amp;quot; was not working for me neither, and I had the same results &amp;quot;ED 52 39 9B&amp;quot;, so I fixed it on the page. --[[User:Robert|Robert]]&lt;br /&gt;
&lt;br /&gt;
= What is &amp;quot;77x&amp;quot;? Header size wrong? =&lt;br /&gt;
The description for the headers command says &amp;quot;77x?&amp;quot; as the size for the block_headers[] returned.  However, the description of the block_header structure is 81 bytes (4+32+32+4+4+4+1).  What exactly is returned by the headers command? -- [[User:AndyParkins|AndyParkins]]&lt;br /&gt;
&lt;br /&gt;
= Endianess on magic numbers =&lt;br /&gt;
The given magic numbers are the wrong way around.  The magic numbers are little endian 32 bit numbers on the network, so Testnet.Magic = 0xdab5bffa and Prodnet.Magic = 0xd9b4bef9.  The two examples are the order they come in from the wire, so at the very least should be shown with spaces between the bytes.&lt;br /&gt;
[[User:AndyParkins|AndyParkins]]&lt;br /&gt;
&lt;br /&gt;
:I stumbled upon this as well and corrected the page. --[[User:Theo|Theo]] 10:13, 7 June 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
= Version not advertised? =&lt;br /&gt;
Doing some experiments the version seems to be sent by the client, not the server as I think the page currently says.&lt;br /&gt;
&amp;quot;When a node receives an incoming connection, it will immediately advertise its version.&amp;quot;&lt;br /&gt;
That is not true. --[[User:Bluecmd|Bluecmd]] 10:02, 5 June 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
:You&#039;re right, net.h says in CNode constructor: --[[User:Theo|Theo]] 10:09, 7 June 2011 (GMT)&lt;br /&gt;
        // Be shy and don&#039;t send version until we hear&lt;br /&gt;
        if (!fInbound)&lt;br /&gt;
            PushVersion();&lt;br /&gt;
&lt;br /&gt;
= Version in getblocks? =&lt;br /&gt;
Apparently the official client sends the protocol version in getblocks messages, (possibly even in getheaders). This seems to me to be just weird --[[User:Bluecmd|Bluecmd]] 14:57, 6 June 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
= Separate page for hexdumps? =&lt;br /&gt;
&lt;br /&gt;
Does anyone else think it may be a good idea to put the hexdumps on a separate page?  It&#039;d be nice to have this page just describe the protocol, but at the same time, be able to have examples of each of the different messages and objects.  On that node, would it also be helpful if I were to do a hexdump example of all of the different commands/structures? --[[User:Andrew12|Andrew12]] 23:26, 9 June 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
= Proposing additional protocol messages =&lt;br /&gt;
&lt;br /&gt;
According to the Bitcoin paper in order to do the simplified verification the client needs to store all headers of the entire chain but needs data only for those blocks that contain transactions of interest.&lt;br /&gt;
&lt;br /&gt;
For this I propose the following new message types:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;setfilter&#039;&#039;&#039; this message contains a list of bitcoin addresses. After receiving this message on a connection the client will stop broadcasting any inv messages for transactions which don&#039;t have a matching address in its inputs or outputs. inv for new blocks will not be filtered. &lt;br /&gt;
 &lt;br /&gt;
* &#039;&#039;&#039;getblocksfiltered&#039;&#039;&#039; this message works exactly like getblocks but it will be answered with a filtered list of only those blocks that contain transactions with unspent outputs matching the filter list.&lt;br /&gt;
&lt;br /&gt;
and the following new inventory type for getdata&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MSG_BLOCK_PRUNED&#039;&#039;&#039; this will be answered like a MSG_BLOCK but all transactions not matching the filter list and transactions that are already spent will be stripped from the block before transmitting it to the client.&lt;br /&gt;
&lt;br /&gt;
When a client requests such filtering then all new blocks will still be advertised like normal but the client will have the opportunity to request only the absolute minimum necessary data to perform the simplified verification as outlined in the paper and new transactions will only be sent to it if they match the filter list. This should save a LOT of bandwidth.&lt;br /&gt;
[[User:Prof7bit|Prof7bit]] 21:03, 24 June 2011 (GMT)&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:Protocol_documentation&amp;diff=11539</id>
		<title>Talk:Protocol documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:Protocol_documentation&amp;diff=11539"/>
		<updated>2011-06-24T21:05:18Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: /* Proposing additional potocol messages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hexdumps =&lt;br /&gt;
I&#039;m adding some hexdumps of messages and data structures and descriptions of how these are interpreted in order to help others understand these protocol and data structures.  It&#039;s a bit redundant, so any ideas as to how to remove some of the redundancy while keeping the knowledge accessible are welcome (feel free to make the changes yourself!). -- [[User:X6763|X6763]]&lt;br /&gt;
&lt;br /&gt;
= Checksum wrong? =&lt;br /&gt;
Is the checksum in the addr sample correct?  Here&#039;s what I get using OpenSSL (sorry for long lines):&lt;br /&gt;
SHA256(&amp;quot;\x01\xe2\x15\x10\x4d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x0a\x00\x00\x01\x20\x8d&amp;quot;) = &lt;br /&gt;
d6 88 65 c8 20 61 d5 e2 54 52 b5 5b 52 17 98 b1 11 50 85 96 2e 49 e8 fd da b7 f4 fb a3 9c d8 2c&lt;br /&gt;
and SHA256 of that is&lt;br /&gt;
ed 52 39 9b 56 8e d8 d5 9a 83 72 9c 11 6f 87 d0 be f2 84 e9 98 f3 47 7c 98 61 16 9a b1 2e ed 5c&lt;br /&gt;
It could easily be I&#039;m using OpenSSL incorrectly, so wanted to get confirmation -- [[User:AndyParkins|AndyParkins]]&lt;br /&gt;
 - The checksum for &amp;quot;addr&amp;quot; was not working for me neither, and I had the same results &amp;quot;ED 52 39 9B&amp;quot;, so I fixed it on the page. --[[User:Robert|Robert]]&lt;br /&gt;
&lt;br /&gt;
= What is &amp;quot;77x&amp;quot;? Header size wrong? =&lt;br /&gt;
The description for the headers command says &amp;quot;77x?&amp;quot; as the size for the block_headers[] returned.  However, the description of the block_header structure is 81 bytes (4+32+32+4+4+4+1).  What exactly is returned by the headers command? -- [[User:AndyParkins|AndyParkins]]&lt;br /&gt;
&lt;br /&gt;
= Endianess on magic numbers =&lt;br /&gt;
The given magic numbers are the wrong way around.  The magic numbers are little endian 32 bit numbers on the network, so Testnet.Magic = 0xdab5bffa and Prodnet.Magic = 0xd9b4bef9.  The two examples are the order they come in from the wire, so at the very least should be shown with spaces between the bytes.&lt;br /&gt;
[[User:AndyParkins|AndyParkins]]&lt;br /&gt;
&lt;br /&gt;
:I stumbled upon this as well and corrected the page. --[[User:Theo|Theo]] 10:13, 7 June 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
= Version not advertised? =&lt;br /&gt;
Doing some experiments the version seems to be sent by the client, not the server as I think the page currently says.&lt;br /&gt;
&amp;quot;When a node receives an incoming connection, it will immediately advertise its version.&amp;quot;&lt;br /&gt;
That is not true. --[[User:Bluecmd|Bluecmd]] 10:02, 5 June 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
:You&#039;re right, net.h says in CNode constructor: --[[User:Theo|Theo]] 10:09, 7 June 2011 (GMT)&lt;br /&gt;
        // Be shy and don&#039;t send version until we hear&lt;br /&gt;
        if (!fInbound)&lt;br /&gt;
            PushVersion();&lt;br /&gt;
&lt;br /&gt;
= Version in getblocks? =&lt;br /&gt;
Apparently the official client sends the protocol version in getblocks messages, (possibly even in getheaders). This seems to me to be just weird --[[User:Bluecmd|Bluecmd]] 14:57, 6 June 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
= Separate page for hexdumps? =&lt;br /&gt;
&lt;br /&gt;
Does anyone else think it may be a good idea to put the hexdumps on a separate page?  It&#039;d be nice to have this page just describe the protocol, but at the same time, be able to have examples of each of the different messages and objects.  On that node, would it also be helpful if I were to do a hexdump example of all of the different commands/structures? --[[User:Andrew12|Andrew12]] 23:26, 9 June 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
= Proposing additional protocol messages =&lt;br /&gt;
&lt;br /&gt;
According to the Bitcoin paper in order to do the simplified verification the client needs to store all headers of the entire chain but needs data only for those blocks that contain transactions of interest.&lt;br /&gt;
&lt;br /&gt;
For this I propose the following new message types:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;setfilter&#039;&#039;&#039; this message contains a list of bitcoin addresses. After receiving this messaage on a connection the client will stop broadcasting any inv messages for transactions which don&#039;t have a matching address in its inputs or outputs. inv for new blocks will not be filtered. &lt;br /&gt;
 &lt;br /&gt;
* &#039;&#039;&#039;getblocksfiltered&#039;&#039;&#039; this message works exactly like getblocks but it will be answered with a filtered list of only those blocks that contain transactions with unspent outputs matching the filter list.&lt;br /&gt;
&lt;br /&gt;
and the following new inventory type for getdata&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MSG_BLOCK_PRUNED&#039;&#039;&#039; this will be answered like a MSG_BLOCK but all transactions not matching the filter list and transactions that are already spent will be stripped from the block before transmitting it to the client.&lt;br /&gt;
&lt;br /&gt;
When a client requests such filtering then all new blocks will still be advertised like normal but the client will have the opportunity to request only the absolute minumum necessary data to perform the simplified verification as outlined in the paper and new transactions will only be sent to it if they match the filter list. This should save a LOT of bandwidth.&lt;br /&gt;
[[User:Prof7bit|Prof7bit]] 21:03, 24 June 2011 (GMT)&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:Protocol_documentation&amp;diff=11538</id>
		<title>Talk:Protocol documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:Protocol_documentation&amp;diff=11538"/>
		<updated>2011-06-24T21:04:11Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hexdumps =&lt;br /&gt;
I&#039;m adding some hexdumps of messages and data structures and descriptions of how these are interpreted in order to help others understand these protocol and data structures.  It&#039;s a bit redundant, so any ideas as to how to remove some of the redundancy while keeping the knowledge accessible are welcome (feel free to make the changes yourself!). -- [[User:X6763|X6763]]&lt;br /&gt;
&lt;br /&gt;
= Checksum wrong? =&lt;br /&gt;
Is the checksum in the addr sample correct?  Here&#039;s what I get using OpenSSL (sorry for long lines):&lt;br /&gt;
SHA256(&amp;quot;\x01\xe2\x15\x10\x4d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x0a\x00\x00\x01\x20\x8d&amp;quot;) = &lt;br /&gt;
d6 88 65 c8 20 61 d5 e2 54 52 b5 5b 52 17 98 b1 11 50 85 96 2e 49 e8 fd da b7 f4 fb a3 9c d8 2c&lt;br /&gt;
and SHA256 of that is&lt;br /&gt;
ed 52 39 9b 56 8e d8 d5 9a 83 72 9c 11 6f 87 d0 be f2 84 e9 98 f3 47 7c 98 61 16 9a b1 2e ed 5c&lt;br /&gt;
It could easily be I&#039;m using OpenSSL incorrectly, so wanted to get confirmation -- [[User:AndyParkins|AndyParkins]]&lt;br /&gt;
 - The checksum for &amp;quot;addr&amp;quot; was not working for me neither, and I had the same results &amp;quot;ED 52 39 9B&amp;quot;, so I fixed it on the page. --[[User:Robert|Robert]]&lt;br /&gt;
&lt;br /&gt;
= What is &amp;quot;77x&amp;quot;? Header size wrong? =&lt;br /&gt;
The description for the headers command says &amp;quot;77x?&amp;quot; as the size for the block_headers[] returned.  However, the description of the block_header structure is 81 bytes (4+32+32+4+4+4+1).  What exactly is returned by the headers command? -- [[User:AndyParkins|AndyParkins]]&lt;br /&gt;
&lt;br /&gt;
= Endianess on magic numbers =&lt;br /&gt;
The given magic numbers are the wrong way around.  The magic numbers are little endian 32 bit numbers on the network, so Testnet.Magic = 0xdab5bffa and Prodnet.Magic = 0xd9b4bef9.  The two examples are the order they come in from the wire, so at the very least should be shown with spaces between the bytes.&lt;br /&gt;
[[User:AndyParkins|AndyParkins]]&lt;br /&gt;
&lt;br /&gt;
:I stumbled upon this as well and corrected the page. --[[User:Theo|Theo]] 10:13, 7 June 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
= Version not advertised? =&lt;br /&gt;
Doing some experiments the version seems to be sent by the client, not the server as I think the page currently says.&lt;br /&gt;
&amp;quot;When a node receives an incoming connection, it will immediately advertise its version.&amp;quot;&lt;br /&gt;
That is not true. --[[User:Bluecmd|Bluecmd]] 10:02, 5 June 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
:You&#039;re right, net.h says in CNode constructor: --[[User:Theo|Theo]] 10:09, 7 June 2011 (GMT)&lt;br /&gt;
        // Be shy and don&#039;t send version until we hear&lt;br /&gt;
        if (!fInbound)&lt;br /&gt;
            PushVersion();&lt;br /&gt;
&lt;br /&gt;
= Version in getblocks? =&lt;br /&gt;
Apparently the official client sends the protocol version in getblocks messages, (possibly even in getheaders). This seems to me to be just weird --[[User:Bluecmd|Bluecmd]] 14:57, 6 June 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
= Separate page for hexdumps? =&lt;br /&gt;
&lt;br /&gt;
Does anyone else think it may be a good idea to put the hexdumps on a separate page?  It&#039;d be nice to have this page just describe the protocol, but at the same time, be able to have examples of each of the different messages and objects.  On that node, would it also be helpful if I were to do a hexdump example of all of the different commands/structures? --[[User:Andrew12|Andrew12]] 23:26, 9 June 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
= Proposing additional potocol messages =&lt;br /&gt;
&lt;br /&gt;
According to the Bitcoin paper in order to do the simplified verification the client needs to store all headers of the entire chain but needs data only for those blocks that contain transactions of interest.&lt;br /&gt;
&lt;br /&gt;
For this I propose the following new message types:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;setfilter&#039;&#039;&#039; this message contains a list of bitcoin addresses. After receiving this messaage on a connection the client will stop broadcasting any inv messages for transactions which don&#039;t have a matching address in its inputs or outputs. inv for new blocks will not be filtered. &lt;br /&gt;
 &lt;br /&gt;
* &#039;&#039;&#039;getblocksfiltered&#039;&#039;&#039; this message works exactly like getblocks but it will be answered with a filtered list of only those blocks that contain transactions with unspent outputs matching the filter list.&lt;br /&gt;
&lt;br /&gt;
and the following new inventory type for getdata&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MSG_BLOCK_PRUNED&#039;&#039;&#039; this will be answered like a MSG_BLOCK but all transactions not matching the filter list and transactions that are already spent will be stripped from the block before transmitting it to the client.&lt;br /&gt;
&lt;br /&gt;
When a client requests such filtering then all new blocks will still be advertised like normal but the client will have the opportunity to request only the absolute minumum necessary data to perform the simplified verification as outlined in the paper and new transactions will only be sent to it if they match the filter list. This should save a LOT of bandwidth.&lt;br /&gt;
[[User:Prof7bit|Prof7bit]] 21:03, 24 June 2011 (GMT)&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:Protocol_documentation&amp;diff=11537</id>
		<title>Talk:Protocol documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:Protocol_documentation&amp;diff=11537"/>
		<updated>2011-06-24T21:03:17Z</updated>

		<summary type="html">&lt;p&gt;Prof7bit: /* Proposing additional potocol messages */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hexdumps =&lt;br /&gt;
I&#039;m adding some hexdumps of messages and data structures and descriptions of how these are interpreted in order to help others understand these protocol and data structures.  It&#039;s a bit redundant, so any ideas as to how to remove some of the redundancy while keeping the knowledge accessible are welcome (feel free to make the changes yourself!). -- [[User:X6763|X6763]]&lt;br /&gt;
&lt;br /&gt;
= Checksum wrong? =&lt;br /&gt;
Is the checksum in the addr sample correct?  Here&#039;s what I get using OpenSSL (sorry for long lines):&lt;br /&gt;
SHA256(&amp;quot;\x01\xe2\x15\x10\x4d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x0a\x00\x00\x01\x20\x8d&amp;quot;) = &lt;br /&gt;
d6 88 65 c8 20 61 d5 e2 54 52 b5 5b 52 17 98 b1 11 50 85 96 2e 49 e8 fd da b7 f4 fb a3 9c d8 2c&lt;br /&gt;
and SHA256 of that is&lt;br /&gt;
ed 52 39 9b 56 8e d8 d5 9a 83 72 9c 11 6f 87 d0 be f2 84 e9 98 f3 47 7c 98 61 16 9a b1 2e ed 5c&lt;br /&gt;
It could easily be I&#039;m using OpenSSL incorrectly, so wanted to get confirmation -- [[User:AndyParkins|AndyParkins]]&lt;br /&gt;
 - The checksum for &amp;quot;addr&amp;quot; was not working for me neither, and I had the same results &amp;quot;ED 52 39 9B&amp;quot;, so I fixed it on the page. --[[User:Robert|Robert]]&lt;br /&gt;
&lt;br /&gt;
= What is &amp;quot;77x&amp;quot;? Header size wrong? =&lt;br /&gt;
The description for the headers command says &amp;quot;77x?&amp;quot; as the size for the block_headers[] returned.  However, the description of the block_header structure is 81 bytes (4+32+32+4+4+4+1).  What exactly is returned by the headers command? -- [[User:AndyParkins|AndyParkins]]&lt;br /&gt;
&lt;br /&gt;
= Endianess on magic numbers =&lt;br /&gt;
The given magic numbers are the wrong way around.  The magic numbers are little endian 32 bit numbers on the network, so Testnet.Magic = 0xdab5bffa and Prodnet.Magic = 0xd9b4bef9.  The two examples are the order they come in from the wire, so at the very least should be shown with spaces between the bytes.&lt;br /&gt;
[[User:AndyParkins|AndyParkins]]&lt;br /&gt;
&lt;br /&gt;
:I stumbled upon this as well and corrected the page. --[[User:Theo|Theo]] 10:13, 7 June 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
= Version not advertised? =&lt;br /&gt;
Doing some experiments the version seems to be sent by the client, not the server as I think the page currently says.&lt;br /&gt;
&amp;quot;When a node receives an incoming connection, it will immediately advertise its version.&amp;quot;&lt;br /&gt;
That is not true. --[[User:Bluecmd|Bluecmd]] 10:02, 5 June 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
:You&#039;re right, net.h says in CNode constructor: --[[User:Theo|Theo]] 10:09, 7 June 2011 (GMT)&lt;br /&gt;
        // Be shy and don&#039;t send version until we hear&lt;br /&gt;
        if (!fInbound)&lt;br /&gt;
            PushVersion();&lt;br /&gt;
&lt;br /&gt;
= Version in getblocks? =&lt;br /&gt;
Apparently the official client sends the protocol version in getblocks messages, (possibly even in getheaders). This seems to me to be just weird --[[User:Bluecmd|Bluecmd]] 14:57, 6 June 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
= Separate page for hexdumps? =&lt;br /&gt;
&lt;br /&gt;
Does anyone else think it may be a good idea to put the hexdumps on a separate page?  It&#039;d be nice to have this page just describe the protocol, but at the same time, be able to have examples of each of the different messages and objects.  On that node, would it also be helpful if I were to do a hexdump example of all of the different commands/structures? --[[User:Andrew12|Andrew12]] 23:26, 9 June 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Proposing additional potocol messages ==&lt;br /&gt;
&lt;br /&gt;
According to the Bitcoin paper in order to do the simplified verification the client needs to store all headers of the entire chain but needs data only for those blocks that contain transactions of interest.&lt;br /&gt;
&lt;br /&gt;
For this I propose the following new message types:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;setfilter&#039;&#039;&#039; this message contains a list of bitcoin addresses. After receiving this messaage on a connection the client will stop broadcasting any inv messages for transactions which don&#039;t have a matching address in its inputs or outputs. inv for new blocks will not be filtered. &lt;br /&gt;
 &lt;br /&gt;
* &#039;&#039;&#039;getblocksfiltered&#039;&#039;&#039; this message works exactly like getblocks but it will be answered with a filtered list of only those blocks that contain transactions with unspent outputs matching the filter list.&lt;br /&gt;
&lt;br /&gt;
and the following new inventory type for getdata&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MSG_BLOCK_PRUNED&#039;&#039;&#039; this will be answered like a MSG_BLOCK but all transactions not matching the filter list and transactions that are already spent will be stripped from the block before transmitting it to the client.&lt;br /&gt;
&lt;br /&gt;
When a client requests such filtering then all new blocks will still be advertised like normal but the client will have the opportunity to request only the absolute minumum necessary data to perform the simplified verification as outlined in the paper and new transactions will only be sent to it if they match the filter list. This should save a LOT of bandwidth.&lt;br /&gt;
[[User:Prof7bit|Prof7bit]] 21:03, 24 June 2011 (GMT)&lt;/div&gt;</summary>
		<author><name>Prof7bit</name></author>
	</entry>
</feed>