<?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=Calliptamus</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=Calliptamus"/>
	<link rel="alternate" type="text/html" href="https://en.bitcoin.it/wiki/Special:Contributions/Calliptamus"/>
	<updated>2026-04-13T10:57:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Church&amp;diff=70772</id>
		<title>Bitcoin Church</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Church&amp;diff=70772"/>
		<updated>2025-05-25T17:58:14Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Church of Bitcoin&#039;&#039;&#039; was founded on October 25th 2012 in order to grant [[Bitcoin]] users a non regional spiritual outlet and to escape oppression by existing religious groups. Its homepage may be at [http://bitprayer.com/ bitprayer.com]&lt;br /&gt;
&lt;br /&gt;
The Church of Bitcoin is guided by eleven commandments:&lt;br /&gt;
&lt;br /&gt;
# Praise Satoshi.&lt;br /&gt;
# Honor the blockchain.&lt;br /&gt;
# Thou shalt not fork thine own family.&lt;br /&gt;
# Keep the network holy.&lt;br /&gt;
# Thou should not covet another man&#039;s wallet.&lt;br /&gt;
# Do unto others as you would have them DDoS you.&lt;br /&gt;
# Thou shalt not swear unto another man that thine payment hath not been received until all of the blockchain hath been downloadeth.&lt;br /&gt;
# Salt thine passwords.&lt;br /&gt;
# Hack thine planet.&lt;br /&gt;
# Keep thine woman, [https://twitter.com/brucewagner Bruces] and [https://bitcointalk.org/index.php?topic=98695 Atlases] in separate camps if they are unclean.&lt;br /&gt;
# Troll harder.&lt;br /&gt;
&lt;br /&gt;
[[Category:Satire]]&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
https://en.bitcoin.it/wiki/Church_of_Bitcoin&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Core_0.11_(ch_1):_Overview&amp;diff=70771</id>
		<title>Bitcoin Core 0.11 (ch 1): Overview</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Core_0.11_(ch_1):_Overview&amp;diff=70771"/>
		<updated>2025-05-25T17:57:21Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: /* Organization &amp;amp; Maintenance of these Pages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Organization &amp;amp; Maintenance of these Pages==&lt;br /&gt;
&lt;br /&gt;
The purpose of this set of Wiki pages is to document the Bitcoin Core C++ source code, in a way that is helpful to the programmer who wants to learn how the program is designed and what the code does. &lt;br /&gt;
&lt;br /&gt;
Ideally, the accuracy of the information on these pages would be checked by developers who are getting up to speed on the [[Bitcoin Core]] code base.  Additionally, each new release of Bitcoin Core (0.12, 0.13, etc) could have a new set of pages that are modified to match that version.&lt;br /&gt;
&lt;br /&gt;
These pages are loosely based on the set of pages called &amp;quot;Satoshi Client: xxx&amp;quot; (on this Wiki) which were written in 2011 and based on version 0.3. &lt;br /&gt;
&lt;br /&gt;
This set of Wiki pages includes: &lt;br /&gt;
&lt;br /&gt;
* Ch 1: Intro &amp;amp; Overview (this page) &lt;br /&gt;
* Ch 2: Data Storage&lt;br /&gt;
* Ch 3: Initialization &amp;amp; Startup&lt;br /&gt;
* Ch 4: P2P Network&lt;br /&gt;
* Ch 5: Initial Block Download (IBD)&lt;br /&gt;
* Ch 6: Blockchain&lt;br /&gt;
* Ch 7: Transactions &amp;amp; the Memory Pool&lt;br /&gt;
* Ch 8: RPC Server&lt;br /&gt;
&lt;br /&gt;
These pages document the &amp;quot;relay node&amp;quot; aspect of Bitcoin Core, meaning a node which validates blocks and transactions and relays them to other nodes. The node has fully validated the blockchain, although it may not necessarily maintain a full copy of it on disk. &lt;br /&gt;
&lt;br /&gt;
These pages do NOT cover: &lt;br /&gt;
* Wallet&lt;br /&gt;
* GUI (Qt)&lt;br /&gt;
* Mining&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
A few definitions at the outset:  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Consensus code&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Code that validates blocks and transactions.  &lt;br /&gt;
&lt;br /&gt;
Consensus code must have bug-for-bug compatibility across versions and implementations (meaning, 0.12 must have the same consensus behaviour as 0.11, even if it is buggy;  otherwise, a network fork may result.) &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Policy code&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Code that implements a particular node&#039;s policy (as opposed to consensus).  A node&#039;s algorithm for which transactions to store in its transaction pool is an example of policy.  For example, a node could refuse to relay or store any transaction that is larger than 200KB.  What is important is that if such a transaction is transmitted to the node as part of a newly mined block, the node does not reject the block.   &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;P2P code&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Code relating to communications with other nodes (peers) over the P2P network.  Communication includes discovering and connecting to other nodes; exchanging various P2P messages (e.g., messages containing blocks and transactions); occasionally, banning misbehaving peers. The bitcoin network uses a custom set of P2P messages.  Most of the P2P code can be found in &amp;lt;u&amp;gt;net.h/net.cpp&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mempool (&amp;quot;memory pool&amp;quot; or &amp;quot;transaction pool&amp;quot;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A set of transactions which the node knows about and chooses to store in memory and relay to other nodes, and which have not yet been included in a block.  In many cases, this may be the full set of transactions that the node has received and validated.  If the node has received transactions that violate its policy, however, the mempool will be a subset.  In any event, when the node receives and validates a block, it deletes any transactions in the block from its mempool.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Full Node&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A full node is one that validates blocks and transactions and relays them to other nodes.  A full node has validated the blockchain from scratch (although with block file pruning, it may have discarded older parts of the chain to clear up disk space.) The key characteristic of a full node is that it has validated the blockchain and continues to fully validate and relay incoming blocks and transactions.  A full node can be differentiated from an SPV node, which trusts another node (or set of nodes) to validate. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Basic Full Node&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;basic full node&amp;quot; is what is documented in these pages.  By &amp;quot;basic full node,&amp;quot; what is meant is a node that validates and relays blocks and transactions, but does not mine new blocks or perform other optional tasks (RPC server, wallet).  Extending these pages to include documentation of these optional aspects of a node is a future project.&lt;br /&gt;
&lt;br /&gt;
==Architecture of a Bitcoin Node==&lt;br /&gt;
&lt;br /&gt;
One developer described the architecture of a basic full node as follows: &lt;br /&gt;
&lt;br /&gt;
: --------------------&lt;br /&gt;
&lt;br /&gt;
: The basic architecture of a bitcoin node is as follows:&lt;br /&gt;
&lt;br /&gt;
: At the core there exist fundamental bitcoin message structures, along with the code necessary for serialization/deserialization. These structures belong in their own source files with minimal dependencies so they can be reused for applications that needn&#039;t perform verification and relay - for instance, filtering and notification agents. Unfortunately, these core structures currently reside for the most part in main.h/main.cpp...&lt;br /&gt;
&lt;br /&gt;
: On top of these core structures sits a network component that manages sockets, does peer discovery, and handles queueing and dispatching of messages. This component is clearly dependent on the core message structures but does not depend on the specific logic used to verify blocks and transactions nor to identify misbehaving peers nor sign transactions nor maintain a block chain database.&lt;br /&gt;
&lt;br /&gt;
: Then we have a scripting engine, signature verification component, and a signing component. Historical database applications do not need signature verification/signing functionality at all. Filtering messages and sending alerts generally does not even require a scripting engine and does fine with basic pattern matching.&lt;br /&gt;
&lt;br /&gt;
: The most critical high-level operations needed by a verification/relay node such as the satoshi client are transaction verification; block chain and memory pool management; and detection/management of misbehaving peers. These things are currently primarily implemented in main.h/main.cpp. These are indeed the main operations of the satoshi client - but the core low-level structures should not depend at all on this logic.&lt;br /&gt;
&lt;br /&gt;
: ---------------------&lt;br /&gt;
&lt;br /&gt;
See here: [https://github.com/bitcoin/bitcoin/pull/2154 PR 2154]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the form of a (crude) picture: &lt;br /&gt;
 &lt;br /&gt;
   Validating transactions; Managing blockchain, mempool, and peers.&lt;br /&gt;
                    | &lt;br /&gt;
       Scripting engine / Signatures&lt;br /&gt;
                    | &lt;br /&gt;
              Network layer&lt;br /&gt;
                    | &lt;br /&gt;
              P2P Messages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And here is the same picture, augmented with the definitions above: &lt;br /&gt;
 &lt;br /&gt;
   Validating transactions; Managing blockchain, mempool, peers  (Consensus and Policy code)&lt;br /&gt;
                    | &lt;br /&gt;
       Scripting engine / Signatures (Consensus code)&lt;br /&gt;
                    | &lt;br /&gt;
              Network layer  (P2P code) &lt;br /&gt;
                    | &lt;br /&gt;
              P2P Messages&lt;br /&gt;
&lt;br /&gt;
==Code Modularization / Organization==&lt;br /&gt;
&lt;br /&gt;
As of 0.11, modularization of the Bitcoin Core code is somewhat limited.   &lt;br /&gt;
&lt;br /&gt;
Ideally, Bitcoin Core would be modularized so that the consensus code would be separated and made into a library which could be distributed to other implementations.  In this way, fears of accidentally forking the network would be mitigated.  As of 2016, this is work in progress (see, e.g., various &amp;quot;libconsensus&amp;quot; pull requests on GitHub.) &lt;br /&gt;
&lt;br /&gt;
In December 2013, a proposal was made for modularizing the code base:  [https://github.com/bitcoin/bitcoin/issues/3440 Post-0.9 modularization of Bitcoin Core]&lt;br /&gt;
&lt;br /&gt;
Examples of optional modules would be: &lt;br /&gt;
* Miner&lt;br /&gt;
* Wallet&lt;br /&gt;
* Notifications&lt;br /&gt;
&lt;br /&gt;
As of 0.11, the steps taken toward modularization were primarily separating certain classes into subdirectories, described below.&lt;br /&gt;
&lt;br /&gt;
==Source Code Files==&lt;br /&gt;
&lt;br /&gt;
The C++ code is in the src/ directory of the repository.  &lt;br /&gt;
&lt;br /&gt;
Most of the code resides in the top-level directory, although there has been some effort to modularize the code base with subdirectories (wallet, consensus, primitives, etc.)  Also, certain components (QT, LevelDB, etc) live in subdirectories.&lt;br /&gt;
&lt;br /&gt;
Key files in the src/ directory include:  (file.* means the header file [file.h] and the source file [file.cpp])&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File !! Description / Purpose&lt;br /&gt;
|-&lt;br /&gt;
| net.* ||  Manages the network (peer connections, etc.).&amp;lt;br&amp;gt;The while(true) loop in ThreadMessageHandler controls the program&#039;s flow, signalling &amp;lt;u&amp;gt;main.cpp&amp;lt;/u&amp;gt; when there is work to do. &amp;lt;br&amp;gt;Key dependencies:  None. &lt;br /&gt;
|-&lt;br /&gt;
| init.cpp ||  Initializes the node, calling functions in &amp;lt;u&amp;gt;main.cpp&amp;lt;/u&amp;gt; as necessary.&amp;lt;br&amp;gt;Key dependencies: main.h&lt;br /&gt;
|-&lt;br /&gt;
| main.* || main.h declares some key global variables (mapBlockIndex, chainActive, mempool, etc), constants, and functions. &amp;lt;br&amp;gt;&amp;lt;u&amp;gt;main.cpp&amp;lt;/u&amp;gt; is the program&#039;s longest source file (5,237 lines).&amp;lt;br&amp;gt;main.cpp has most of the key functions for managing the blockchain, such as connecting, disconnecting, validating and storing blocks; identifying a certain block as the tip of the longest chain; and so forth.&amp;lt;br&amp;gt;The &amp;quot;entry point&amp;quot; for most of the code is ProcessMessages (which listens for a signal from the message-handling thread.).&amp;lt;br&amp;gt;Some of the code is run during initialization, called directly from init.cpp. &amp;lt;br&amp;gt;Key dependencies: net.h&lt;br /&gt;
|-&lt;br /&gt;
| chain.* || The header file (chain.h) is the more notable of the two, as it declares the type definitions for the metadata about the block (CBlockIndex) and the longest blockchain (CChain). &amp;lt;br&amp;gt;chain.cpp contains a few handy functions for managing the blockchain (e.g., locating blocks and finding a fork point between two chains.)&lt;br /&gt;
|-&lt;br /&gt;
| coins.* ||  The header file declares a CCoin, which is, conceptually, &amp;quot;a bitcoin.&amp;quot;&amp;lt;br&amp;gt;The source file contains methods for manipulating coins (retrieving, spending, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| miner.* ||  Contains the mining code, including block creation and generating new bitcoins. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Subdirectories:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The subdirectories fall into three categories: &lt;br /&gt;
* Well-defined components (in some cases third-party) &lt;br /&gt;
* Modularization of code&lt;br /&gt;
* Other (unit tests, build files, etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Subdirectories - Components:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Directory !! Description / Purpose&lt;br /&gt;
|-&lt;br /&gt;
| leveldb || C++ source code, docs, etc. for the LevelDB build.&lt;br /&gt;
|-&lt;br /&gt;
|  qt || The GUI code (QT).&amp;lt;br&amp;gt;QT is a C++ open-source project for GUI code, first released in 1995.&lt;br /&gt;
|-&lt;br /&gt;
|  secp256k1 || Library implementing ECDSA cryptography.&amp;lt;br&amp;gt;Purpose: This proprietary C library eliminates reliance on SSL for signature checking.&amp;lt;br&amp;gt;This is important because SSL was susceptible to introducing consensus bugs, because newly released versions do not guarantee bug-for-bug compatibility.&amp;lt;br&amp;gt;This library was written/released in early 2015. &lt;br /&gt;
|-&lt;br /&gt;
|  zmq || From the ZMQ wiki:&amp;lt;br&amp;gt;ZMQ (or ZeroMQ or 0MQ) is a high-performance asynchronous messaging library.&amp;lt;br&amp;gt;It provides a message queue, but unlike message-oriented middleware, a ZMQ system can run without a dedicated message broker. &amp;lt;br&amp;gt;The library is designed to have a familiar socket-style API.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Subdirectories - Modularization:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Directory !! Key Files !! Description / Purpose&lt;br /&gt;
|-&lt;br /&gt;
| consensus || consensus.*&amp;lt;br&amp;gt;merkle.*&amp;lt;br&amp;gt;params.*&amp;lt;br&amp;gt;validation.*  || Code implementing (or defining, as the case may be) the block &amp;amp; transaction validation rules.&amp;lt;br&amp;gt;Purpose: Moving this code into a subdirectory is a step towards modularizing the consensus code.&amp;lt;br&amp;gt;The idea is that in a future version of bitcoin, the consensus code should be packaged as a library, so that alternative implementations of the protocol could simply include this library and guarantee validation compatibility.  &amp;quot;...[T]he goal is not reimplementing the consensus rules but rather extract them from Bitcoin Core so that nobody needs to re-implement them again. It is not only exposing it but also separating it from Bitcoin Core so that they can be changed without having to also change/take into account non-consensus Bitcoin Core specific things.&amp;quot; -- Jorge Timon, on bitcoin-development mailing list, 20 Aug 2015.&amp;lt;br&amp;gt;Discussion on github: [https://github.com/bitcoin/bitcoin/issues/6714 PR6714] &lt;br /&gt;
|-&lt;br /&gt;
| crypto || ripemd.*&amp;lt;br&amp;gt;sha256.*  || Cryptographic hash functions.&amp;lt;br&amp;gt;Both RIPEMD and SHA-256 are used in transforming a bitcoin address to Base-58 encoding.&lt;br /&gt;
|-&lt;br /&gt;
| policy || policy.*&amp;lt;br&amp;gt;fees.* ||  Move validation code that is a matter of &#039;&#039;policy&#039;&#039; (as opposed to consensus) into a separate directory.&lt;br /&gt;
|-&lt;br /&gt;
| primitives  || block.*&amp;lt;br&amp;gt;transaction.*  || Definitions of certain basic data types (blocks, transactions, etc.)&lt;br /&gt;
|-&lt;br /&gt;
|  script || interpreter.*&amp;lt;br&amp;gt;script.*&amp;lt;br&amp;gt;standard.* || The script engine.&amp;lt;br&amp;gt;Defines the op_codes (script.h).&amp;lt;br&amp;gt;Parses and evaluates the validation script. (interpreter.cpp:EvalScript())&amp;lt;br&amp;gt;Defines what is a &amp;quot;standard&amp;quot; transaction (standard.h).&amp;lt;br&amp;gt;Purpose: the Script engine validates basic transactions but also makes contracts possible.&lt;br /&gt;
|-&lt;br /&gt;
|  wallet || wallet.*  || Wallet code. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Subdirectories - Other:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Directory !! Description / Purpose&lt;br /&gt;
|-&lt;br /&gt;
| compat || A few minor, low-level files dealing with compatibility details. &lt;br /&gt;
|-&lt;br /&gt;
| config&amp;lt;br&amp;gt;obj&amp;lt;br&amp;gt;obj-test || These directories relate to the build process.&lt;br /&gt;
|-&lt;br /&gt;
|  test || Unit tests.&amp;lt;br&amp;gt;Uses the Boost unit test framework.&amp;lt;br&amp;gt;A good introduction to the Boost user test framework is here:  [http://www.alittlemadness.com/2009/03/31/c-unit-testing-with-boosttest/]&lt;br /&gt;
|-&lt;br /&gt;
|  univalue || Per the README:&amp;lt;br&amp;gt;&amp;quot;A universal value object, with JSON encoding (output) and decoding (input).&amp;lt;br&amp;gt;Built as a single dynamic RAII C++ object class, and no templates.&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Object-Oriented Design&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Naturally, being a C++ program, the code employs object-oriented design.&lt;br /&gt;
&lt;br /&gt;
However, the code&#039;s use of object-oriented design is by not universal.  In 0.11, objects are used mainly for defining the data structures which main.cpp uses to manage the blockchain and the UTXO set (the bitcoins). Main.h declares many functions and global variables but almost no classes; &amp;lt;u&amp;gt;main.cpp&amp;lt;/u&amp;gt; is over 5000 lines but does not include any class methods.  &lt;br /&gt;
&lt;br /&gt;
The code has a relatively flat class structure, with most classes being &amp;quot;stand-alone&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
Where inheritance is used, it often is a linear hierarchy (i.e.:  A &amp;lt;-- B &amp;lt;--C &amp;lt;-- D)&lt;br /&gt;
&lt;br /&gt;
For example: &lt;br /&gt;
 CBlockHeader &amp;lt;-- CBlock&lt;br /&gt;
 CTransaction &amp;lt;-- CMerkleTx &amp;lt;-- CWalletTx&lt;br /&gt;
&lt;br /&gt;
There are only a few examples of base classes that have more than one descendant class, and multiple inheritance is only used once in the code (CWallet inherits from 2 classes.) &lt;br /&gt;
&lt;br /&gt;
The program&#039;s best example of an elegant class hierarchy relates to the coins caches.  It uses an abstract class that is inherited by a few subclasses that demonstrate encapsulation and polymorphism.  Chapter 3 has a class diagram as well as a diagram and explanation of how the classes are instantiated and relate to one another.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multithreading&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The code uses Boost thread groups to implement multithreading.  The vast majority of the action takes place in the message-processing thread, and to a lesser extent the socket thread. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observer (Signals and slots)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;observer&amp;quot; pattern uses &amp;quot;signals and slots&amp;quot; to decouple two or more areas of code. Bitcoin Core 0.11 uses the observer pattern in a limited way.  Namely, it uses signals to decouple the message-gathering loop from the &amp;lt;u&amp;gt;main.cpp&amp;lt;/u&amp;gt; code.  In 0.10 and earlier a normal function call was used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==See also==&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_2):_Data_Storage Bitcoin Core 0.11 (Ch 2): Data Storage]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_3):_Initialization_and_Startup Bitcoin Core 0.11 (Ch 3): Initialization and Startup]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_4):_P2P_Network Bitcoin Core 0.11 (Ch 4): P2P Network]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_5):_Initial_Block_Download Bitcoin Core 0.11 (Ch 5): Initial Block Download]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_6):_The_Blockchain Bitcoin Core 0.11 (Ch 6): The Blockchain]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Core_0.11_(ch_4):_P2P_Network&amp;diff=70770</id>
		<title>Bitcoin Core 0.11 (ch 4): P2P Network</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Core_0.11_(ch_4):_P2P_Network&amp;diff=70770"/>
		<updated>2025-05-25T17:55:49Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Bitcoin is a peer-to-peer network, so [[Bitcoin Core]] has code to discover peers and manage those connections. &lt;br /&gt;
&lt;br /&gt;
Most of the network-handling code is in &amp;lt;u&amp;gt;net.h/cpp&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
==Data structures to manage peers==&lt;br /&gt;
&lt;br /&gt;
At any given time, the node is connected with a set of other nodes, i.e. peers.  By default the code connects to 8 outbound peers (nodes that our node goes out and finds) and allows up to 125 inbound peers (nodes that find us through the network). &lt;br /&gt;
&lt;br /&gt;
The global variable vNodes (&amp;lt;u&amp;gt;net.h&amp;lt;/u&amp;gt;) holds the set of peers.  The variable is protected by cs_vNodes. &lt;br /&gt;
&lt;br /&gt;
Each peer is represented by a CNode.&lt;br /&gt;
&lt;br /&gt;
The CNode contains dozens of attributes, most of which have to do with low-level plumbing (sockets, byte streams, etc.) &lt;br /&gt;
&lt;br /&gt;
Some of the key attributes of a CNode include: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CNode&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Description&lt;br /&gt;
|-&lt;br /&gt;
| nServices || Commonly referred to as &amp;quot;the service bits.&amp;quot;&amp;lt;br&amp;gt;This is a bitmap of what services the peer provides.&amp;lt;br&amp;gt;As of 0.11 this is still just binary:  either the node is NODE_NETWORK (it is a full node and does everything) or not (it is SPV).&amp;lt;br&amp;gt;In future versions, these bits will convey more precise information about what the node can and can&#039;t do. For example, with Block Pruning a node may be able to serve recent blocks (say, the last week or two worth of blocks), but not the entire blockchain. &lt;br /&gt;
|-&lt;br /&gt;
| fClient || Whether this peer is a SPV node.  (Here, the term &amp;quot;client&amp;quot; means &amp;quot;merely SPV, not a full node.&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| fOneShot || &lt;br /&gt;
|-&lt;br /&gt;
| fInbound ||  Whether this node is &amp;quot;inbound&amp;quot; or &amp;quot;outbound.&amp;quot; Common sense suggests that a node that we discovered through the network (an outbound node) is less likely to attack us than a node that found us.&amp;lt;br&amp;gt;So, for example, when the code looks for a peer to request historical blocks from, it prefers an outbound node, if possible. &lt;br /&gt;
|-&lt;br /&gt;
| fWhiteListed || A whitelisted node is not subject to being banned for bad behaviour. &lt;br /&gt;
|-&lt;br /&gt;
| setInventoryKnown || &lt;br /&gt;
|-&lt;br /&gt;
| vSendMsg || Messages that we&#039;ve queued up to send to the peer.&amp;lt;br&amp;gt;This is type &amp;lt;CSerializeData&amp;gt; since we are going to send it over the network. &lt;br /&gt;
|-&lt;br /&gt;
| vRecvMsg || Messages that we&#039;ve received from the peer.&amp;lt;br&amp;gt;This is type &amp;lt;CNetMessage&amp;gt; because as soon as the data is received, it is deserialized and packed into a more useful format (an object).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Peer discovery &amp;amp; connectivity==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Address manager===&lt;br /&gt;
&lt;br /&gt;
IP addresses of the node&#039;s peers are managed by the address manager (see &amp;lt;u&amp;gt;addrman.h&amp;lt;/u&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
The code comment explains the address manager (edited here for conciseness):&lt;br /&gt;
&lt;br /&gt;
 Design goals:&lt;br /&gt;
   * Keep the address tables in-memory, and asynchronously dump the entire table to peers.dat.&lt;br /&gt;
   * Make sure no (localized) attacker can fill the entire table with his nodes/addresses.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;To that end: &lt;br /&gt;
   * Addresses are organized into buckets.&lt;br /&gt;
     * Addresses that have not yet been tried go into 1024 &amp;quot;new&amp;quot; buckets.&lt;br /&gt;
     * Addresses of nodes that are known to be accessible go into 256 &amp;quot;tried&amp;quot; buckets.&lt;br /&gt;
     * Bucket selection is based on cryptographic hashing, using a randomly-generated 256-bit key, which should not be observable by adversaries.&lt;br /&gt;
     * Several indexes are kept for high performance. Defining DEBUG_ADDRMAN will introduce frequent (and expensive) consistency checks for the entire data structure.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Timestamps&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The address manager also keeps track of when each peer was last heard from.  Timestamps are only updated on an address and saved to the database when the timestamp is over 20 minutes old.  By understanding the role of timestamps, it will become more clear why timestamps are kept the way they are for each of the different ways an address is discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Peer discovery===&lt;br /&gt;
&lt;br /&gt;
The program discovers the IP address and port of nodes in several different ways: &lt;br /&gt;
* Address database (peers.dat)&lt;br /&gt;
* User-specified (-addnode and -connect)&lt;br /&gt;
* DNS seeding&lt;br /&gt;
* Hard-coded seeds&lt;br /&gt;
* From other peers (&amp;quot;getaddr&amp;quot; and &amp;quot;addr&amp;quot; messages)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Address database (peers.dat)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nodes store addresses in a database (peers.dat) which is read on startup, and loaded into the address manager.  &lt;br /&gt;
&lt;br /&gt;
This method does not work the first time the program is run, since it does not already know about any other nodes on the bitcoin network.&lt;br /&gt;
&lt;br /&gt;
For details on when/how the code stores to the database, see the section above on the address manager. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) User-specified on the command line&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The user can specify nodes to connect to on the command line with -addnode &amp;lt;ip&amp;gt; or -connect &amp;lt;ip&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Notes on user-specified IP addresses: &lt;br /&gt;
* Multiple nodes may be specified.&lt;br /&gt;
* Addresses are initially given a zero timestamp, therefore they are not advertised in response to a &amp;quot;getaddr&amp;quot; request.&lt;br /&gt;
* With -connect, the IP addresses will not be added to peers.dat and only the provided addresses will be used. &lt;br /&gt;
* With -addnode, the provided addresses will be used as a starting point, but the node will soon learn other peers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3) DNS seeding&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
DNS seeding is only used if the peers.dat database is empty (as it would be when initiallly running the program) and the user has not specified any nodes with -addnode or -connect. &lt;br /&gt;
&lt;br /&gt;
In this case, the node can issue DNS requests to discover IP addresses of other peers.&lt;br /&gt;
&lt;br /&gt;
As of 0.11, there are six DNS servers hard-coded into the program -  see chainparams.cpp. &lt;br /&gt;
&lt;br /&gt;
A DNS reply can contain multiple IP addresses for a requested name.&lt;br /&gt;
&lt;br /&gt;
Addresses discovered via DNS are initially given a zero timestamp, to avoid being advertised in response to a &amp;quot;getaddr&amp;quot; request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4) Hard-coded nodes (last resort)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If DNS seeding fails, the client contains hard coded IP addresses that represent bitcoin nodes.  See:  &amp;lt;u&amp;gt;chainparamsseeds.h&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These addresses are only used as a last resort, and a log message will be printed:  &amp;quot;Adding fixed seed nodes as DNS doesn&#039;t seem to be available.&amp;quot;   (&amp;lt;u&amp;gt;net.cpp&amp;lt;/u&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
The idea is to move away from seed nodes as soon as possible, to avoid overloading those nodes. &lt;br /&gt;
&lt;br /&gt;
Once the local node has enough addresses (presumably learned from the seed nodes), the connection thread will close any seed node connections.&lt;br /&gt;
&lt;br /&gt;
Like the DNS seed addresses, the hard-coded seed addresses are also given a zero timestamp to avoid being advertised in response to a &amp;quot;getaddr&amp;quot; request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5) From other nodes (&amp;quot;getaddr&amp;quot; and &amp;quot;addr&amp;quot; messages)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nodes exchange IP addresses with other nodes via the &amp;quot;getaddr&amp;quot; and &amp;quot;addr&amp;quot; messages.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Usually, an addr&amp;quot; message is sent in response to a &amp;quot;getaddr&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
However, the &amp;quot;addr&amp;quot; message may also arrive unsolicited, because nodes advertise addresses gratuitously when they: &lt;br /&gt;
* Relay addresses (see below)&lt;br /&gt;
* Advertise their own address periodically.  (Every 24 hours, the node advertises its own address to all connected nodes.)&lt;br /&gt;
* When a connection is made (in response to an initial &amp;quot;version&amp;quot; message) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When does a node send a &amp;quot;getaddr&amp;quot; message? &lt;br /&gt;
* In response to a &amp;quot;version&amp;quot; message from an outbound node. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Receiving an &amp;quot;addr&amp;quot; message: &lt;br /&gt;
* If the sending node is an old version and we have 1000 addresses already, it is ignored. &lt;br /&gt;
* If the sending node is a current version and is attempting to send us more than 1000 addresses, the peer is punished for misbehaving. &lt;br /&gt;
* If the address has been seen in the last 24 hours and the timestamp is currently over 60 minutes old, then it is updated to 60 minutes ago.&lt;br /&gt;
* If the address has NOT been seen in the last 24 hours, and the timestamp is currently over 24 hours old, then it is updated to 24 hours ago.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Responding to a &amp;quot;getaddr&amp;quot; message:&lt;br /&gt;
* The node figures out how many addresses it has that have a timestamp in the last 3 hours. &lt;br /&gt;
* It sends those addresses, but if there are more than 2500 addresses, it randomly selects 2500.&lt;br /&gt;
* It clears the list of the addresses we think the remote node has, which will trigger a refresh of sends to nodes. See SendMessages. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Address Relay&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Once added, the newly received IP addresses may be relayed to other nodes if the following conditions are met:&lt;br /&gt;
* The address timestamp is recent (within 10 minutes of the current time)&lt;br /&gt;
* The &amp;quot;addr&amp;quot; message contained 10 addresses or less&lt;br /&gt;
* fGetAddr=false for the sending peer. (See the code for details.)&lt;br /&gt;
* The address must be routable.&lt;br /&gt;
* Code: &lt;br /&gt;
 if (addr.nTime &amp;gt; nSince &amp;amp;&amp;amp; !pfrom-&amp;gt;fGetAddr &amp;amp;&amp;amp; vAddr.size() &amp;lt;= 10 &amp;amp;&amp;amp; addr.IsRoutable())&lt;br /&gt;
* If this test is passed, then the code&#039;s next step is (see main.cpp for details): &lt;br /&gt;
 // Use deterministic randomness to send to the same nodes for 24 hours at a time so the addrKnowns of the chosen nodes prevent repeats.&lt;br /&gt;
&lt;br /&gt;
===Peer connectivity===&lt;br /&gt;
&lt;br /&gt;
The connection thread (ThreadOpenConnections) chooses among the available addresses and makes connections, and disconnects nodes when appropriate. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Use of CSemaphore for outbound connections&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The code uses a semaphore to manage the number of outbound connections (usually 8). &lt;br /&gt;
&lt;br /&gt;
Most of the code dealing with the semaphore is in &amp;lt;u&amp;gt;net.cpp&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When a connection is opened, the semaphore grant is passed to the CNode data structure.  This allows the socket thread to release the semaphore when the time comes, with: &lt;br /&gt;
 pnode-&amp;gt;grantOutbound.Release()  // see net.cpp&lt;br /&gt;
&lt;br /&gt;
The code CSemaphore grant(*semOutbound) will wait until there is a connection available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inbound connections: accepting and disconnecting&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inbound connections can be up to 125 total.  &lt;br /&gt;
&lt;br /&gt;
ThreadSocketHandler has the code that accepts inbound connections. &lt;br /&gt;
&lt;br /&gt;
The socket thread loop: &lt;br /&gt;
* 1) Disconnects sockets that have the fDisconnect flag set on them (and have empty buffers)&lt;br /&gt;
* 2) Prepares all sockets for &amp;quot;select&amp;quot;&lt;br /&gt;
* 3) Calls &amp;quot;select&amp;quot;, which is a system call which waits for activity on a set of sockets. &lt;br /&gt;
&lt;br /&gt;
When the select() call returns, the node accepts any new connections, receives and sends on any ready sockets, and marks any inactive sockets to be disconnected (whether inbound or outbound).&lt;br /&gt;
&lt;br /&gt;
Sockets are disconnected if: &lt;br /&gt;
 * they are 60 seconds old and have not sent or received data.&lt;br /&gt;
 * they have not sent or received data in the last 20 minutes (TIMEOUT_INTERVAL = 20*60) (or 90 minutes if peer is an old version)&lt;br /&gt;
 * the socket overfills the buffer (see CNode::ReceiveMsgBytes- &amp;quot;Oversized message from peer=%i, disconnecting\n&amp;quot; in &amp;lt;u&amp;gt;net.cpp&amp;lt;/u&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
==Sockets &amp;amp; Messages==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Socket Thread&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The socket thread operates at the TCP layer.  &lt;br /&gt;
&lt;br /&gt;
It goes through an endless loop, reading and writing the sockets. (see &amp;lt;u&amp;gt;net.cpp&amp;lt;/u&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Its loop involves three basic activities: &lt;br /&gt;
&lt;br /&gt;
1) Administrative work:  disconnecting unused sockets, checking which sockets have data, adding sockets for new connections.&lt;br /&gt;
&lt;br /&gt;
2) Receiving data:  It reads the sockets that have data using the recv() system call and places that data into the peer&#039;s queue of CNetMessages.  A CNetMessage organizes the data into two data streams - the message header and the message data (vRecv).  The socket thread reads the buffer until it has processed all the messages from this particular peer. &lt;br /&gt;
&lt;br /&gt;
3) Sending data:  The message thread queued up messages-to-be-sent as vSendMsg objects, so the socket thread deserializes these objects and sends them using send(). (send() is a syscall and any incompatibilities across different operating systems are handled in the &amp;lt;u&amp;gt;compat.h&amp;lt;/u&amp;gt; file.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Message Thread&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the program&#039;s main thread. &lt;br /&gt;
&lt;br /&gt;
It operates primarily at the &amp;quot;business logic&amp;quot; level - validating transactions, managing the blockchain, etc. &lt;br /&gt;
&lt;br /&gt;
In a sense, all of the node&#039;s activities take the form of processing an inbound message or preparing an outbound message.  &lt;br /&gt;
&lt;br /&gt;
Like the socket thread, this thread consists of a while(true) loop, processing inbound messages and queuing up outbound messages.  Once the program&#039;s initialization is complete, this loop (see &amp;lt;u&amp;gt;net.cpp&amp;lt;/u&amp;gt;:ThreadMessageHandler) is the program&#039;s high-level point of control. &lt;br /&gt;
&lt;br /&gt;
The loop uses signals to notify &amp;lt;u&amp;gt;main.cpp&amp;lt;/u&amp;gt; that there are messages waiting to be processed.  The signal is picked up by ProcessMessages().&lt;br /&gt;
&lt;br /&gt;
The use of signals has nothing to do with multi-threading;  the signal is sent and picked up in the same thread.  The use of signals was introduced in version 0.9 for the purpose of decoupling &amp;lt;u&amp;gt;net.cpp&amp;lt;/u&amp;gt; from &amp;lt;u&amp;gt;main.cpp&amp;lt;/u&amp;gt;.   In version 0.8, the loop simply called the ProcessMessages() function.  By changing to signals, the &amp;lt;u&amp;gt;net.cpp&amp;lt;/u&amp;gt; code no longer needs to be aware of the processing code.  Removing that dependency allows the code to avoid circular includes (since &amp;lt;u&amp;gt;main.cpp&amp;lt;/u&amp;gt; requires knowledge of &amp;lt;u&amp;gt;net.h&amp;lt;/u&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
The pull request introducing signals is [https://github.com/bitcoin/bitcoin/pull/2154 PR 2154.]&lt;br /&gt;
&lt;br /&gt;
The commit removing the &amp;quot;main.h&amp;quot; dependency is [https://github.com/CodeShark/bitcoin/commit/6e68524e95da2bedc21b1d95c4a206b902ab7c22 here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ProcessMessages (&amp;lt;u&amp;gt;main.cpp&amp;lt;/u&amp;gt;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ProcessMessages() is the entry point in &amp;lt;u&amp;gt;main.cpp&amp;lt;/u&amp;gt; for almost all of the code that processes and validates transactions and blocks, etc. &lt;br /&gt;
&lt;br /&gt;
It attempts to find a message start signature in the vRecv stream. If it finds a message start, it deletes everything prior to the start. Then it reads the header, extracts the message type, and calls ProcessMessage on the message.&lt;br /&gt;
&lt;br /&gt;
ProcessMessage() is basically a large &amp;quot;switch&amp;quot; which takes action based on what type of message it is dealing with.  &lt;br /&gt;
&lt;br /&gt;
Often, in the course of processing a message, the code will push messages to the outbound queue.  For example, when processing an incoming &amp;quot;getdata&amp;quot; message, the node pushes the outbound data into the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SendMessages (&amp;lt;u&amp;gt;main.cpp&amp;lt;/u&amp;gt;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
SendMessages() creates messages and queues them up in the peer&#039;s vSendMsg queue (a double-ended queue, or &amp;quot;deque&amp;quot; in C++).  The vSendMsg objects are basically just serialized data. &lt;br /&gt;
&lt;br /&gt;
SendMessages goes through various data structures looking for work to do.  When it produces a message it calls the CNode-&amp;gt;PushMessage, which queues the outbound data.  (Note that there are many other places in the code that produce messages and call CNode-&amp;gt;PushMessage;  SendMessages() doesn&#039;t have any kind of exclusive license on placing messages in the outbound queue.)&lt;br /&gt;
&lt;br /&gt;
Once the data is queued up by PushMessage, it sits and waits for the socket thread to come along. &lt;br /&gt;
&lt;br /&gt;
The socket thread and the message thread use a peer-specific lock (node-&amp;gt;cs_vSend) to coordinate access to the socket.&lt;br /&gt;
&lt;br /&gt;
==Locks==&lt;br /&gt;
&lt;br /&gt;
The main locks associated with the P2P aspect of the code are: &lt;br /&gt;
* cs_vNodes controls access to the CNode objects.&lt;br /&gt;
* cs_vSend controls access to the node&#039;s send buffer. &lt;br /&gt;
* cs_vRecvMsg controls access to the node&#039;s receiving buffer. &lt;br /&gt;
* cs_inventory &lt;br /&gt;
&lt;br /&gt;
==Denial-of-Service Prevention==&lt;br /&gt;
&lt;br /&gt;
DoS prevention is implemented by keeping track of misbehaving peers, and if they misbehave, banning them.&lt;br /&gt;
&lt;br /&gt;
The DoS prevention framework was introduced in 2011, in Pull 517.&lt;br /&gt;
&lt;br /&gt;
As summarized there: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
The big idea: if a peer is sending you obviously wrong information, punish it by maybe dropping your connection to it, and ban it&#039;s IP address so it cannot immediately re-connect.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The probability of dropping the connection, and the length of the ban, depend on how wrong, and how potentially wasteful/damaging, the peer is. So sending an extra &#039;version&#039; message is a minor transgression that is usually tolerated, sending an more than MAX_BLOCK_SIZE block is a major transgression.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Detailed how-it-works, using &amp;quot;I got a version message I wasn&#039;t expecting&amp;quot; as the specific example:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Getting a version message from a peer increases that peer&#039;s &#039;misbehaving&#039; score by 10, and (assuming that is the peer&#039;s first bad behavior) gives it a 10% of being disconnected. If it is disconnected, then that peer&#039;s IP address is banned from connecting for a couple of hours. If it is not disconnected, then nothing happens unless the peer misbehaves again; if it does, then its chances of being disconnected go up, and the length of time it will be banned increases.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Misbehavior/ban information is stored only in memory, and information about misbehaving peers is never broadcast. Also, peers that are disconnected/banned are just dropped, there is no warning or reason sent. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
     --Gavin Andresen&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source:  https://github.com/bitcoin/bitcoin/pull/517&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Banned nodes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The set of banned nodes is in setBanned in &amp;lt;u&amp;gt;net.cpp&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
By default, a node is banned for 24 hours, though this can be configured with -bantime option.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_1):_Overview Bitcoin Core 0.11 (Ch 1): Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_2):_Data_Storage Bitcoin Core 0.11 (Ch 2): Data Storage]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_3):_Initialization_and_Startup Bitcoin Core 0.11 (Ch 3): Initialization and Startup]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_5):_Initial_Block_Download Bitcoin Core 0.11 (Ch 5): Initial Block Download]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_6):_The_Blockchain Bitcoin Core 0.11 (Ch 6): The Blockchain]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Core_0.11_(ch_5):_Initial_Block_Download&amp;diff=70769</id>
		<title>Bitcoin Core 0.11 (ch 5): Initial Block Download</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Core_0.11_(ch_5):_Initial_Block_Download&amp;diff=70769"/>
		<updated>2025-05-25T17:54:52Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: /* Background */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page explains how Bitcoin Core downloads the blockchain when your node first joins the network.  &lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
&lt;br /&gt;
Once a new node joins the network, its first order of business is to download and validate the entire [[Block chain|blockchain]].   This is an integral step to the distributed nature of bitcoin because only by doing this can a node claim that it has independently validated all transactions.  &lt;br /&gt;
&lt;br /&gt;
As the blockchain grows in size, the time required for IBD increases unless optimizations are made to the code.  Various optimizations have been made since Satoshi&#039;s original client was released, but as of 2014, with increasing transaction volume, initial download on laptop hardware with an average connection could still take up to 24 hours.  Developers agreed that this was unacceptable and a new approach was developed called &amp;quot;headers first&amp;quot; mode.  This approach resulted in a substantial speedup.&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Headers First&amp;quot; mode==&lt;br /&gt;
&lt;br /&gt;
With &amp;quot;headers-first&amp;quot; mode, a new node downloads all of the block headers first, which are very small (about 80 bytes, whereas a block can be up to 1MB).  Once the node has all of the headers, from the genesis block up to the current tip of the blockchain (380,000 as of October 2015), only then does it begins downloading the full blocks.&lt;br /&gt;
&lt;br /&gt;
Now that it has the headers, the node downloads blocks in parallel from multiple peers.  (It downloads headers from only one peer, but that&#039;s no big deal since headers are small.)  The node will download from up to 8 peers at once and will disconnect any peer that stalls for more 2 seconds, attempting to connect to a faster peer. &lt;br /&gt;
&lt;br /&gt;
Headers-first IBD was merged in 2014 in:  [https://github.com/bitcoin/bitcoin/pull/4468 Pull Request 4468].&lt;br /&gt;
&lt;br /&gt;
As summarized in the PR comment, some of its main features are [comment is edited slightly here]:&lt;br /&gt;
&lt;br /&gt;
* Do not use &#039;getblocks&#039;, but &#039;getheaders&#039;, and use it to build a headers tree.&lt;br /&gt;
* Blocks are fetched in parallel from all available outbound peers, using a limited moving window. When one peer stalls the movement of the window, it is disconnected.&lt;br /&gt;
* No more orphan blocks. At all. We only ever request a block for which we have verified the headers, and store it to disk immediately. This means that a disk-fill attack would require Proof of Work.&lt;br /&gt;
* We sync from everyone we can, though limited to 1 during initial headers sync.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Checkpoints==&lt;br /&gt;
&lt;br /&gt;
The Bitcoin Core initial block download code makes sure that the block headers you are downloading (from a single peer) passes certain, hard-coded &amp;quot;checkpoints.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Checkpoints are block hashes corresponding to a long-ago block that everyone (where &amp;quot;everyone&amp;quot; means the network participants as recognized by the Bitcoin Core commit-access developers) recognizes as being on the longest chain.  The checkpoints are set far enough in the so as to be non-controversial. &lt;br /&gt;
&lt;br /&gt;
The IBD checkpoints check is at &amp;lt;u&amp;gt;main.cpp:2784&amp;lt;/u&amp;gt; (version 0.11).&lt;br /&gt;
&lt;br /&gt;
The hardcoded figures are in &amp;lt;u&amp;gt;chainparams.cpp&amp;lt;/u&amp;gt;.  (As of 0.11, there were 13 checkpoints, the first at block 11,111, the last at block 295,000.)&lt;br /&gt;
&lt;br /&gt;
From chainparams.cpp: &lt;br /&gt;
&lt;br /&gt;
:: /**&lt;br /&gt;
:: * What makes a good checkpoint block?&lt;br /&gt;
:: *   Is surrounded by blocks with reasonable timestamps (no blocks before with a timestamp after, none after with timestamp before)&lt;br /&gt;
:: *   Contains no strange transactions&lt;br /&gt;
:: */&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Purpose of Checkpoints&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The purpose of checkpoints is primarily DoS protection. As Greg Maxwell explained on [https://bitcointalk.org/index.php?topic=194078.0 bitcointalk in 2013]: &lt;br /&gt;
&lt;br /&gt;
: User: They [checkpoints] are there so some quantum computing farm (doesn&#039;t exist, but...) can&#039;t come out of nowhere and roll back blocks by mining a long chain from far in the past.&lt;br /&gt;
&lt;br /&gt;
: gmaxwell: That&#039;s not really what they&#039;re for— though they have that effect too. Most of their usefulness is that they prevent a dos attacker from filling up bitcoin node&#039;s disk space with long runs of low difficulty blocks forked off low in the chain.  e.g. you start off with difficulty 1 blocks at block 0, now mine-able by the millions by a single asic— _MAYBE_ a chain that starts off that way could eventually turn out to be the longest so absent the checkpoints a node would happily follow an endlessly long chain of them.  They also make is so that an attacker who has complete control of your network (and thus can prevent you from hearing the longest chain from the honest bitcoin network) from putting you on a fake (low difficulty) isolated chain unless they can also trick you into running replaced software. With the checkpoints such an attacker hast to have a ton of mining power in order to continue the chain.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Origin of Checkpoints&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to Gavin Andresen, checkpoints were originally introduced in response to the &amp;quot;overflow&amp;quot; bug which would permit anyone to spend anyone&#039;s bitcoins. [https://bitcointalk.org/index.php?topic=1647.40 see here, page 3]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More info on Checkpoints:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: First checkpoint introduced by Satoshi in July 2010 (v0.3.2): [https://bitcointalk.org/index.php?topic=437 here]&lt;br /&gt;
: Bitcoin talk thread on checkpoints (Nov 2010):  [https://bitcointalk.org/index.php?topic=1647 here] &lt;br /&gt;
: Bitcoin talk thread (2013): [https://bitcointalk.org/index.php?topic=194078.0 here]&lt;br /&gt;
&lt;br /&gt;
==Bitcoin Core code implementing IBD==&lt;br /&gt;
&lt;br /&gt;
Most of the code is in &amp;lt;u&amp;gt;main.h/cpp&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block Status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The concept of block status is important (see chapter 2 and/or &amp;lt;u&amp;gt;chain.cpp&amp;lt;/u&amp;gt;).  Your node assigns a newly received block a status and updates that status as it learns more about the block.  (The block status could also change in the future, for example if there is a re-organization and the block is no longer on the longest blockchain.)  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Downloading Block Headers&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The code starts by downloading headers from a single peer.  &lt;br /&gt;
&lt;br /&gt;
The download begins in SendMessages (&amp;lt;u&amp;gt;main.cpp&amp;lt;/u&amp;gt;), which is called periodically by the message-handling thread.  &lt;br /&gt;
&lt;br /&gt;
If the code sees that we  are not caught up and we haven&#039;t started syncing from anyone:&lt;br /&gt;
&lt;br /&gt;
* We send: &amp;quot;getheaders&amp;quot;&lt;br /&gt;
* Peer replies: &amp;quot;headers&amp;quot; (a chunk of 2000 headers)&lt;br /&gt;
* We send: &amp;quot;getheaders&amp;quot;&lt;br /&gt;
* Peer replies: &amp;quot;headers&amp;quot; (a chunk of 2000 headers)&lt;br /&gt;
* &amp;lt;continue...&amp;gt;&lt;br /&gt;
* Peer replies: &amp;quot;headers&amp;quot; (a chunk of LESS THAN 2000 headers)&lt;br /&gt;
&lt;br /&gt;
When the peer sends less than 2000 headers, we conclude that we reached the tip of the peer&#039;s blockchain.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block Locators&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A Block Locator is used to find a fork point between two nodes, which is where the nodes should start exchanging block headers. &lt;br /&gt;
&lt;br /&gt;
Here is the definition (in &amp;lt;u&amp;gt;primitives/block.h&amp;lt;/u&amp;gt;): &lt;br /&gt;
&lt;br /&gt;
  /* Describes a place in the block chain to another node such that if the&lt;br /&gt;
  * other node doesn&#039;t have the same branch, it can find a recent common trunk.&lt;br /&gt;
  * The further back it is, the further before the fork it may be.&lt;br /&gt;
  */&lt;br /&gt;
  struct CBlockLocator&lt;br /&gt;
  {&lt;br /&gt;
  std::vector&amp;lt;uint256&amp;gt; vHave;&lt;br /&gt;
   ...&lt;br /&gt;
  (a few basic constructor &amp;amp; serialization methods)&lt;br /&gt;
  ...&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
So, a Locator is basically a vector of block hashes.  The vector is populated with 32 hashes which are chosen to maximize the likelihood of quickly finding a common block with a peer.  &lt;br /&gt;
&lt;br /&gt;
In normal operation, we would generally expect to be within a few blocks of our peers.  Thus, the vector starts with the 10 last block hashes before &amp;quot;jumping back&amp;quot; exponentially.  Thus the comment &amp;quot;the futher back it is, the futher before the fork it might be:&amp;quot;  what is meant is that firstly, if you and your peer are within 10 blocks of one another, the fork point will be included in the list of hashes.  If you and your peer are 15 blocks away from one another, you&#039;ll surely find a common block that&#039;s within a few blocks of the fork point and only one further iteration of Locator will be reuqired to find the fork point.  However, if you and your peer diverge by 10,000 blocks, the Locator may only find a common trunk that&#039;s a few hundred (or more) blocks before the fork point, so another two or three Locator objects will need to be exchanged to zero in on the fork point.  &lt;br /&gt;
&lt;br /&gt;
See CChain::GetLocator and CBlockIndex::GetAncestor [both in &amp;lt;u&amp;gt;chain.cpp&amp;lt;/u&amp;gt;].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block Skiplist Pointer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Every block index contains the following attribute: &lt;br /&gt;
&lt;br /&gt;
  // pointer to the index of some further predecessor of this block&lt;br /&gt;
  CBlockIndex* pskip;&lt;br /&gt;
&lt;br /&gt;
The algorithm for choosing a given block&#039;s &amp;quot;skip pointer&amp;quot; is in &amp;lt;u&amp;gt;chain.cpp&amp;lt;/u&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
  // Determine which height to jump back to. Any number strictly lower than height is acceptable,&lt;br /&gt;
  // but the following expression seems to perform well in simulations (max 110 steps to go back&lt;br /&gt;
  // up to 2**18 blocks).&lt;br /&gt;
  return (height &amp;amp; 1) ? InvertLowestOne(InvertLowestOne(height - 1)) + 1 : InvertLowestOne(height)&lt;br /&gt;
  InvertLowestOne(int n) { return n &amp;amp; (n - 1); }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The skip pointer is used to move through the blockchain in O(log n) rather than walking the chain in O(n).&lt;br /&gt;
&lt;br /&gt;
The idea behind a &amp;quot;skip list&amp;quot; is described here: [https://en.wikipedia.org/wiki/Skip_list Wikipedia page for skiplist]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Processing the Block Headers&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Code path: &lt;br /&gt;
ProcessMessage (entry point) &lt;br /&gt;
AcceptBlockHeader&lt;br /&gt;
CheckBlockHeader (non-contextual validation checks)&lt;br /&gt;
ContextualCheckBlockHeader  (blockchain-aware validation checks) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Non-Contextual Checks&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These checks are &amp;quot;non-contextual&amp;quot; because they do not require any knowledge of the state of our blockchain. &lt;br /&gt;
&lt;br /&gt;
1) Proof-of-Work Meets Claimed Requirement:  Here, the code checks that the block has the POW that the miner claims was necessary when constructing the block.  Later, we&#039;ll re-check it against our blockchain.  An honest miner should always pass both checks.  Only a miner who lies about the required POW (block.nBits) would pass this check but fail the contextual check. &lt;br /&gt;
&lt;br /&gt;
2) Timestamp not-too-late:  The code checks that the timestamp is less than 2 days in the future.  This is context-independent because the code just compares the block&#039;s timestamp against the system time. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt; Contextual Checks &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These checks require some knowledge of our node&#039;s blockchain. &lt;br /&gt;
&lt;br /&gt;
1) Re-check Proof of Work:  Here, we re-check the POW based on our own knowledge of the difficulty target (rather than trusting the difficulty the miner placed in the block&#039;s nBits). &lt;br /&gt;
&lt;br /&gt;
2) Checkpoints (if enabled):  If this block&#039;s height is a checkpoint, the block hash matches the hash stored in the checkpoint map.  (see checkpoint.cpp).&lt;br /&gt;
&lt;br /&gt;
3) Timestamp not-too-early:  Here, we check that the block&#039;s timestamp is not prior to the previous block&#039;s median time (of the previous 11 blocks).  This guarantees that the median time continues to advance from block to block.  Obviously, this check is context-dependent because it requires knowledge of prior blocks in the active chain, which is obtained by retrieving the block from mapBlockIndex.  For more info, see [BIP 113].&lt;br /&gt;
&lt;br /&gt;
4) Version number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Add the Block&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, add the block to mapBlockIndex and update pIndexBestHeader (see AddToBlockIndex()).  &lt;br /&gt;
&lt;br /&gt;
At this point, the block indexes are VALID_TREE, since we know they are on the main chain, but we haven&#039;t yet received the transactions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Downloading Blocks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your node will start downloading blocks from the peer that it is downloading headers from right away.  &lt;br /&gt;
&lt;br /&gt;
This is so because: &lt;br /&gt;
* The headers-peer is surely a preferred-download peer, set when you received its &amp;quot;version&amp;quot; message (&amp;lt;u&amp;gt;main.cpp:4056&amp;lt;/u&amp;gt;).&lt;br /&gt;
* Thus, your node will call FindNextBlocksToDownload for your headers-peer (&amp;lt;u&amp;gt;main.cpp:5143&amp;lt;/u&amp;gt;). &lt;br /&gt;
* Your headers-peer will have a valid pIndexBestKnownBlock (&amp;lt;u&amp;gt;main.cpp:421&amp;lt;/u&amp;gt;), since that was set in UpdateBlockAvailability() when you received the peer&#039;s headers (&amp;lt;u&amp;gt;main.cpp:4532&amp;lt;/u&amp;gt;).&lt;br /&gt;
* FindNextBlocksToDownload will return a vector of block hashes, which you&#039;ll then request (see &amp;lt;u&amp;gt;main.cpp:5145&amp;lt;/u&amp;gt; [add block to the request vector] and &amp;lt;u&amp;gt;main.cpp:5178&amp;lt;/u&amp;gt; [send getdata msg to your headers-peer]).&lt;br /&gt;
&lt;br /&gt;
However, you will not start downloading blocks from the other peers until IBD is complete.  &lt;br /&gt;
&lt;br /&gt;
This is so because: &lt;br /&gt;
* Your other peers are probably also preferred-download peers, so you&#039;ll call FindNextBlockToDownload just like with your headers-peer. &lt;br /&gt;
* However, that function call will return immediately because it won&#039;t be able to find any available blocks. &lt;br /&gt;
* When IBD concludes (see discussion below), you&#039;ll start exchanging headers with the other peers. &lt;br /&gt;
* Once you&#039;ve exchanged headers with your other peers, you&#039;ll start requesting blocks. &lt;br /&gt;
&lt;br /&gt;
Blocks are downloaded in chunks of 16 blocks at a time from each peer.  With a block size of 1MB, if blocks are full we are talking about 16MB chunks.  (See main.h - &amp;quot;MAX_BLOCKS_IN_TRANSIT_PER_PEER&amp;quot;.)  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Moving Window&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The download code uses a &amp;quot;moving window&amp;quot; of 1024 blocks.  The idea is that although you are downloading different chunks from multiple peers, at any given time the blocks you are downloading are fairly close together.  The main purpose of this is so that blocks that are near one another on the blockchain are most likely contained in the same .dat file (where the raw block data is stored on disk).  One advantage of having a correlation between blockchain location and block file location is that if the node chooses to &amp;quot;prune&amp;quot; block data at a later date, it&#039;s easier to delete older block files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Disconnecting a peer&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The code disconnects slow peers in order to keep the download moving.  The peer can be disconnect under two scenarios.  &lt;br /&gt;
&lt;br /&gt;
First, any block requested from the peer must be delivered within a certain timeframe. &lt;br /&gt;
&lt;br /&gt;
Usually, this timeframe is 20 minutes.&lt;br /&gt;
&lt;br /&gt;
The following code is in &amp;lt;u&amp;gt;main.cpp&amp;lt;/u&amp;gt;: &lt;br /&gt;
     GetBlockTimeout(...) { return nTime + 500000 * consensusParams.nPowTargetSpacing * (4 + nValidatedQueuedBefore);}&lt;br /&gt;
&lt;br /&gt;
nValidatedQueuedBefore are the number of blocks that are in flight to us and which we have validated.  Let&#039;s call that N. &lt;br /&gt;
&lt;br /&gt;
If N = 0, this code evaluates as: &lt;br /&gt;
: = 500,000 microseconds (1/2 second) * 600 seconds (the target block interval) * 4 &lt;br /&gt;
: = 0.5 seconds * 600 seconds * 4 &lt;br /&gt;
: = 1,200 seconds&lt;br /&gt;
: = 20 minutes&lt;br /&gt;
&lt;br /&gt;
The formula can be simplified as: &lt;br /&gt;
: = 0.5 * (4 + N) * block_interval&lt;br /&gt;
: = (2 + 0.5 * N) * block_interval&lt;br /&gt;
&lt;br /&gt;
Thus: &lt;br /&gt;
: N=0, timeout = 2 * block_interval = 20 minutes.&lt;br /&gt;
: N=10, timeout = 7 * block_interval = 70 minutes. &lt;br /&gt;
: N=30, timeout = 17 * block_interval = 170 minutes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second circumstance where we will disconnect a peer is where the peer manages to stall your entire download by preventing the moving window from progressing.  Imagine your moving window is blocks 1000 to 2024 and you&#039;ve downloaded everything from 1016 to 2024, but are waiting for Alice to serve up 1000 to 1016, which you may have requsted a few minutes earlier.  In this siutation, if Alice continues to stall the moving window for 2 seconds, you will drop Alice and replace her with a more reliable peer. In the mantime, your node will request blocks 1000 to 1016 from one of your other peers so your moving window can start moving again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requesting Blocks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Requesting blocks is handled by sending out a &amp;quot;getdata&amp;quot; message (see main.cpp:5137 in v0.11).  A &amp;quot;getdata&amp;quot; message is used to pack a vector of &amp;quot;inv&amp;quot; messages and send as a group.  Thus, we can request 16 blocks from the peer with one network message, as opposed to sending 16 separate &amp;quot;inv&amp;quot; messages.&lt;br /&gt;
&lt;br /&gt;
What blocks do we request?  The code to figure that out is in FindNextBlocksToDownload; it uses a &#039;&#039;&#039;block locator&#039;&#039;&#039; to figure out the last block we have in common with this peer, and starts from there.  A block locator is a homemade algorithm that efficiently finds the fork point between our node and a given peer.  The locator will pack a list of 32 blocks, starting with the last 10 (since in steady-state we are usually within 10 blocks of our peers), and then jumping back exponentially.  (&amp;lt;u&amp;gt;chain.cpp:25&amp;lt;/u&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
This algorithm has proven to be effective at locating the fork point. &lt;br /&gt;
 &lt;br /&gt;
Once we&#039;ve prepared the &amp;quot;getdata&amp;quot; message, we mark the blocks that we&#039;ve requested as being &amp;quot;in flight&amp;quot; - with MarkBlocksAsInFlight (main.cpp).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Receiving Blocks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The entry point for receiving blocks is in ProcessMessage, when our node receives a &amp;quot;block&amp;quot; message from a peer.  &lt;br /&gt;
&lt;br /&gt;
The block is processed with ProcessNewBlock (main.cpp):&lt;br /&gt;
&lt;br /&gt;
: 1) Checks on the block&lt;br /&gt;
:: a)  Basic, context-independent checks on the block (merkle root, block size, etc)&lt;br /&gt;
:: b)  Basic, context-independent on transactions within the block  (transaction size, etc.)&lt;br /&gt;
:: c)  Check that we requested this block (if unrequested, this may be a DOS attack - though not necessarily) &lt;br /&gt;
:: d)  Context-dependent checks on the block&lt;br /&gt;
&lt;br /&gt;
: 2)  Store the block to disk &lt;br /&gt;
&lt;br /&gt;
: 3)  General check on the integrity of our blockchain (this may sound expensive, but is very fast)&lt;br /&gt;
&lt;br /&gt;
: 4)  Connect the block to the blockchain - if appropriate (see ActivateBestChain)&lt;br /&gt;
&lt;br /&gt;
Note that the block&#039;s transactions are not validated (checked for a double-spend, etc.) until the last step, when the block is connected as the new tip of the blockchain.  For more info, see below &amp;quot;Connecting a Block&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Monitoring the Download==&lt;br /&gt;
&lt;br /&gt;
You can monitor the download with the RPC call getpeerinfo, which shows (for each peer that you&#039;re connected to):&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;synced_headers&amp;quot;: The last header we have in common with this peer&lt;br /&gt;
* &amp;quot;synced blocks&amp;quot;: The last block in commen with this peer&lt;br /&gt;
* &amp;quot;inflight&amp;quot;: The heights of blocks we&#039;re currently requesting from this peer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_1):_Overview Bitcoin Core 0.11 (Ch 1): Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_2):_Data_Storage Bitcoin Core 0.11 (Ch 2): Data Storage]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_3):_Initialization_and_Startup Bitcoin Core 0.11 (Ch 3): Initialization and Startup]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_4):_P2P_Network Bitcoin Core 0.11 (Ch 4): P2P Network]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_6):_The_Blockchain Bitcoin Core 0.11 (Ch 6): The Blockchain]&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Core_0.11_(ch_6):_The_Blockchain&amp;diff=70768</id>
		<title>Bitcoin Core 0.11 (ch 6): The Blockchain</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Core_0.11_(ch_6):_The_Blockchain&amp;diff=70768"/>
		<updated>2025-05-25T17:53:53Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
This page describes the code that manages the [[Block chain|blockchain]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Block Index and Block Status==&lt;br /&gt;
&lt;br /&gt;
The block index database gets loaded into memory when the node starts.  This means the entire block tree, not just the active chain.  See LoadBlockIndexGuts() in &amp;lt;u&amp;gt;src/txdb.cpp&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The block index (block metadata) is well commented in the code:  see &amp;lt;u&amp;gt;src/chain.h&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One of the key traits of a block is its &amp;quot;verification status.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Verification status captures the degree to which the code has validated this block, as well as its ancestor blocks. &lt;br /&gt;
&lt;br /&gt;
The block&#039;s status is one of the following: &lt;br /&gt;
&lt;br /&gt;
* VALID_HEADER = 1&lt;br /&gt;
* VALID_TREE = 2&lt;br /&gt;
* VALID_TRANSACTIONS = 3&lt;br /&gt;
* VALID_CHAIN = 4&lt;br /&gt;
* VALID_SCRIPTS = 5&lt;br /&gt;
&lt;br /&gt;
The precise meaning of each status code is documented in &amp;lt;u&amp;gt;chain.h&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also stored in the block index are two variables worth mentioning: &lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;nTx:&#039;&#039;&#039;  Number of transactions in this block.  &lt;br /&gt;
: nTx &amp;gt; 0 means that the block has a status of at least VALID_TRANSACTIONS.  &lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;nChainTx:&#039;&#039;&#039;  Number of transactions in this block&#039;s chain, up to and including this block.  &lt;br /&gt;
: This value will be set if and only if transactions for this block &#039;&#039;and all its parents&#039;&#039; are available.  &lt;br /&gt;
: Thus, nChainTx &amp;gt; 0 is shorthand for a chain that is VALID_TRANSACTIONS.  This is notable because this information is not available via the block-status enum.  Namely, VALID_TRANSACTIONS only implies that its parents are TREE, while VALID_CHAIN implies that its parents are also CHAIN.  In a sense, then, the expression (nChainTx !=0) is shorthand for a status that might be said to be &amp;quot;VALID_nChainTx = 3.5&amp;quot; - because it&#039;s more than VALID_TRANSACTIONS but less than VALID_CHAIN. &lt;br /&gt;
: Note: nChainTx is only stored in memory;  there is no corresponding entry in the database.&lt;br /&gt;
&lt;br /&gt;
==Key Variables==&lt;br /&gt;
&lt;br /&gt;
First, a quick C++ reminder: &lt;br /&gt;
* map:  an unordered &amp;lt;key,value&amp;gt; container (think of it as a hashtable) &lt;br /&gt;
* set:  an ordered &amp;lt;key&amp;gt; container (think of it as a sorted linked list) &lt;br /&gt;
* multimap:  an ordered map &amp;lt;key,value&amp;gt; where duplicate keys are allowed (thus, can hold elements &amp;lt;a,1&amp;gt;,&amp;lt;b,2&amp;gt;,&amp;lt;b,3&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mapBlockIndex (map&amp;lt;block_hash, CBlockIndex*&amp;gt;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This map contains all known blocks (where &amp;quot;block&amp;quot; means &amp;quot;block index&amp;quot;).  Since a block index is created and stored in the LevelDB when a header is received, it&#039;s possible to have block indexes in the block map without having received the full block yet, let alone having stored it to disk.&lt;br /&gt;
&lt;br /&gt;
mapBlockIndex is not sorted.  Just think of it as your blocks/ LevelDB in memory, with the key being the block hash. &lt;br /&gt;
&lt;br /&gt;
It is technically of type BlockMap, which is for readability.  BlockMap is an unordered_map&amp;lt;block hash, block index*, comparator_function&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
mapBlockIndex is initialized from the database in LoadBlockIndexGuts, which is run at Step 7 of startup.  Thereafter, it&#039;s updated whenever new blocks are received over the network. &lt;br /&gt;
&lt;br /&gt;
mapBlockIndex only grows, it never shrinks.  (Try searching main.cpp for mapBlockIndex.erase.)  Observe also that the block index&#039;s LevelDB wrapper does not contain functionality for erasing blocks from the database - it&#039;s writing function (WriteBatchSync) only writes to the database. By comparison, the chainstate wrapper&#039;s writing function (BatchWrite) both writes and erases.  (see &amp;lt;u&amp;gt;txdb.cpp&amp;lt;/u&amp;gt;).  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mapBlocksUnlinked&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Multimap containing &amp;quot;all pairs A-&amp;gt;B, where A (or one if its ancestors) misses transactions, but B has transactions.&amp;quot; (comment at &amp;lt;u&amp;gt;main.cpp:125&amp;lt;/u&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The purpose of mapBlocksUnlinked is to quickly attach blocks we&#039;ve already received to the blockchain when we receive a missing, intermediate block. &lt;br /&gt;
&lt;br /&gt;
The alternative would be to search the entire mapBlockIndex;  however, it is more efficient to keep track of unlinked blocks in a separate data structure.  &lt;br /&gt;
&lt;br /&gt;
  Example 1: &lt;br /&gt;
  Let A be our tip.&lt;br /&gt;
  We receive block &#039;&#039;headers&#039;&#039; for B, C.&lt;br /&gt;
  We receive the full block for C.&lt;br /&gt;
  mapBlocksUnlinked = &amp;lt;B,C&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Upon receiving block B, we can connect C.   &lt;br /&gt;
&lt;br /&gt;
  Example 2: &lt;br /&gt;
  Let A be our tip.&lt;br /&gt;
  We receive block &#039;&#039;headers&#039;&#039; for B, C, D.&lt;br /&gt;
  We receive the full block for D.&lt;br /&gt;
  mapBlocksUnlinked = &amp;lt;B,C&amp;gt;, &amp;lt;B,D&amp;gt;, &amp;lt;C,D&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Upon receiving block B, we can connect B as our tip and delete its entries in mapBlocksUnlinked, which would now consist of only one item: &amp;lt;C,D&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;setBlockIndexCandidates&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Set of block indexes that have more total work than our current tip.  (In the normal case where the block extends our current tip, it is easy enough to see that it has more total work than our tip.)  Thus, they are &amp;quot;candidates&amp;quot; for extending our current blockchain (or re-organizing from our current chain to the chain that the candidate is on.)  We call them &amp;quot;candidates&amp;quot; because we verify the block&#039;s proof-of-work when we receive the header, but before we receive the block.  Thus, the &#039;&#039;header&#039;&#039; is a candidate for extending our chain, but we can&#039;t say for sure until we receive the full block (and if the candidate is more than one block away from our current tip, we also need to receive and verify any intermediate blocks.)&lt;br /&gt;
&lt;br /&gt;
   Example 1: Let A be our tip; we then receive, in order, B, C, D, such that: &lt;br /&gt;
    A -- B&lt;br /&gt;
      \&lt;br /&gt;
       C -- D&lt;br /&gt;
&lt;br /&gt;
We verify headers for B, C, D and they all look good. At this point setBlockIndexCandidates contains &amp;lt;B,C,D&amp;gt;.  Assume B has more work than C but less work than D. &lt;br /&gt;
&lt;br /&gt;
Now we receive the full block for B and it checks out.  At this point, we extend chainActive with B as the new tip, and remove B from setBlockIndexCandidates.  We also remove C because it has less work than B.  But D still is. &lt;br /&gt;
&lt;br /&gt;
Now we receive C and D.  C is valid, but D has a bad transaction (double-spend, invalid signature, etc.): &lt;br /&gt;
* Store C to disk and keep it in mapBlocksIndex - it&#039;s a known block&lt;br /&gt;
* Discard D (do not store to disk) and delete it from mapBlocksIndex - it&#039;s a bad block&lt;br /&gt;
* Remove D from setBlockIndexCandidates&lt;br /&gt;
&lt;br /&gt;
Now our chainActive is Genesis - - - - - - - A--B, and setBlockIndexCandidates is &amp;lt;empty&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;pindexBestHeader&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This variable holds the best (most work) header that your node has validated. &lt;br /&gt;
&lt;br /&gt;
It&#039;s set initially when loading the block index, and updated when adding a header to the mapBlockIndex which has more work than the current pIndexBestHeader. &lt;br /&gt;
&lt;br /&gt;
A header is added to mapBlockIndex once it has passed the context-dependent and context-indendent checks.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;chainActive (vector&amp;lt;CBlockIndex*&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
chainActive is the holy blockchain.  It is a linear set of blocks, consisting only of those blocks that comprise the longest chain, beginning with the Genesis block and culminating with the tip. &lt;br /&gt;
&lt;br /&gt;
chainActive is a CChain, which is a vector of block indexes bundled with a few useful methods (see &amp;lt;u&amp;gt;chain.h&amp;lt;/u&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
On startup, the chain is initialized in Step 10 (&amp;lt;u&amp;gt;init.cpp&amp;lt;/u&amp;gt;), which calls ActivateBestChain (&amp;lt;u&amp;gt;main.cpp&amp;lt;/u&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difference between pindexBestHeader and chainActive.Tip&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It&#039;s important to note that pindexBestHeader and chainActive.Tip are NOT necessarily the same thing.  &lt;br /&gt;
&lt;br /&gt;
pindexBestHeader is a pointer to the most-work header our node has received, before having received its transactions.  By comparison, chainActive.Tip is only set after we&#039;ve received and validated the entire block.&lt;br /&gt;
&lt;br /&gt;
==Connecting a block==&lt;br /&gt;
&lt;br /&gt;
When the node receives and accepts a block that has more proof-of-work than the tip of its active blockchain, the node will attempt to make this block the new tip.&lt;br /&gt;
&lt;br /&gt;
In &amp;quot;steady-state&amp;quot;, where our node&#039;s active chain tip is a block B1, the typical course of events is that every 10 minutes or so, the node receives and accepts a new block B2 which was built on top of B1 (meaning B2&#039;s &amp;quot;prev_block&amp;quot; is B1&#039;s hash), notices that B2 has more work than B1, and connects B2 to B1, thereby extending the active chain.&lt;br /&gt;
&lt;br /&gt;
ConnectBlock() is the key moment when a &amp;quot;double-spend&amp;quot; would be discovered.  The block&#039;s transactions are validated against the current UTXO set (the coins database).  Specifically, the code in ConnectBlock loops through each transaction, ensuring that all of the transaction&#039;s inputs can indeed be found in the coins database.  (If a coin had been spent in a prior block, it would not be in the current UTXO set; it would have been in a different, earlier view of the UTXO set, but no longer.)  The ConnectBlock code also contains some DoS protection code:  for example, it ensures that the transactions do not contain an excessive number of signature operations (which are expensive). &lt;br /&gt;
&lt;br /&gt;
ConnectBlock() is the last step in ProcessNewBlock.  Thus, it takes place only after the block has been accepted and stored to disk.  The idea is that a block can be valid in the abstract but whether its transactions are valid is dependent upon the UTXO set at the particular point where the block is being added to the chain.  This may not be known until a later point in time, even in steady-state.  Presume that our current tip is B1, which is then extended by B2 and B3 in rapid succession. For whatever reason, we receive B3 before B2 (perhaps B2 was created by a miner across the globe to whom we are poorly connected, whereas B3 was mined by our next-door neighbor who has a better link to the miner who created B2).  At the moment we receive B3, it may (and probably does) contain transactions whose inputs do not exist in our coin database, because they are only created in B2.  In any event, no effort is made to validate B3 beyond the basic checks.  Later, when we receive B2, we connect it and update the UTXO set, then notice that B3 extends B2.  Now B3&#039;s transactions can be validated and assuming it checks out, it becomes the new tip of the active chain. &lt;br /&gt;
&lt;br /&gt;
If the entire block checks out, then the block is connected, and the undo data is created and stored to disk.&lt;br /&gt;
&lt;br /&gt;
If there&#039;s a problem with one of the block&#039;s transactions, the block is not connected, and the code punishes the peer that sent us the bad block. (See InvalidBlockFound.)&lt;br /&gt;
&lt;br /&gt;
==Disconnecting a block (reorganizations)==&lt;br /&gt;
&lt;br /&gt;
A reorganization (re-org) occurs when your node realizes there is a longer chain that does not derive from chainActive.Tip.  &lt;br /&gt;
&lt;br /&gt;
Most reorganizations are only one-block reorganizations.  This is likely to happen whenever competing miners find new blocks (call them A and B) at about the same time.  Some of the network will receive A first, others B.  Eventually a new block C will be mined on top of either A or B; which one depends on whether the miner who produced C worked on the A or B chain.  Assuming C is mined on top of A, then any node which accepted B as the tip of their blockchain will need to detach B and instead attach A and C. &lt;br /&gt;
&lt;br /&gt;
Here is how a reorg happens in the code: &lt;br /&gt;
* When we receive a new block, if it has more work than our chain&#039;s tip, we add it to the setBlockIndexCandidates (see main.cpp:ReceivedBlockTransactions)&lt;br /&gt;
* After the block is processed, ActivateBestChain checks to see if there&#039;s a block (such as the one we just processed) that has more work than the current chain&#039;s tip.&lt;br /&gt;
* ActivateBestChainStep disconnects blocks as necessary to reach the new tip.  Obviously, in the usual case it is not necessary to disconnect any blocks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DisconnectTip() does the following:&#039;&#039;&#039;&lt;br /&gt;
* Returns the utxo&#039;s that were consumed by this block back to the utxo set (DisconnectBlock).&lt;br /&gt;
* Returns the block&#039;s transactions to the mempool.  (Now they need to be mined by some other block; quite likely in one of the blocks we are about to connect, in which case we&#039;ll remove them again!) &lt;br /&gt;
* Moves chainActive.Tip back one block. &lt;br /&gt;
* Updates the wallet. &lt;br /&gt;
&lt;br /&gt;
Once the code has disconnected blocks back to the fork point, it connects blocks from the fork point to the new tip.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DisconnectBlock (returning utxo&#039;s to the utxo set)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This code uses the undo.dat file to &amp;quot;un-spend&amp;quot; the coins that were spent in the block now being disconnected: &lt;br /&gt;
* Reads the undo file from disk.&lt;br /&gt;
* Processes transactions in reverse order (must be reverse order because CreateNewBlock creates zero-conf transactions &amp;quot;in order&amp;quot;, meaning that if a block contains T1 and T2 and T2 spends a T1 coin, then T1 must come before T2 in its transaction vector;  therefore, when un-spending the coins, T2 must be un-spent before T1). &lt;br /&gt;
* Looks up the spent coins&lt;br /&gt;
* Un-spends the coins in a helper function, ApplyTxInUndo:  coins-&amp;gt;vout[out.n] = undo.txout;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_1):_Overview Bitcoin Core 0.11 (Ch 1): Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_2):_Data_Storage Bitcoin Core 0.11 (Ch 2): Data Storage]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_3):_Initialization_and_Startup Bitcoin Core 0.11 (Ch 3): Initialization and Startup]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_4):_P2P_Network Bitcoin Core 0.11 (Ch 4): P2P Network]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_5):_Initial_Block_Download Bitcoin Core 0.11 (Ch 5): Initial Block Download]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Course_on_Udemy&amp;diff=70767</id>
		<title>Bitcoin Course on Udemy</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Course_on_Udemy&amp;diff=70767"/>
		<updated>2025-05-25T17:51:36Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The first community built Bitcoin course! &lt;br /&gt;
&lt;br /&gt;
This course serves as a central point of introduction to [[Bitcoin]] for anyone interested. It assumes no special skills or knowledge nor experience in computer science. All are welcome and the course shall forever be free under a creative commons license.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [https://www.udemy.com/bitcoin-or-how-i-learned-to-stop-worrying-and-love-crypto Bitcoin or How I Learned to Stop Worrying and Love Crypto] course on Udemy&lt;br /&gt;
&lt;br /&gt;
[[Category:Educational]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Dice&amp;diff=70766</id>
		<title>Bitcoin Dice</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Dice&amp;diff=70766"/>
		<updated>2025-05-25T17:51:08Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bitcoin dice games are by far the most popular [[Bitcoin]] powered casino game available online. Players often regard it as the most pure form of gambling, as dice sites allow entering precise levels of risk and reward, typically at a fixed with a fixed house edge. Often you can bet if the number will be &amp;quot;lo&amp;quot; or &amp;quot;hi&amp;quot;, giving players an illusion of control. Most dice sites offer a form of provably fair, to allow the player to verify the results were not tampered with.&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Dissector&amp;diff=70765</id>
		<title>Bitcoin Dissector</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Dissector&amp;diff=70765"/>
		<updated>2025-05-25T17:50:43Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A wireshark dissector for the [[bitcoin]] protocol.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/lbotsch/wireshark-bitcoin Bitcoin Dissector]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Extension&amp;diff=70764</id>
		<title>Bitcoin Extension</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Extension&amp;diff=70764"/>
		<updated>2025-05-25T17:50:16Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Check balance and send [[Bitcoin]]s from Chrome.&lt;br /&gt;
==This extension can access==&lt;br /&gt;
* Your data on all websites&lt;br /&gt;
* Your tabs and browsing activity&lt;br /&gt;
==External Links==&lt;br /&gt;
* [https://chrome.google.com/webstore/detail/hhbhfoohbnjkdcndbhjlicijccioklea Bitcoin Extension]&lt;br /&gt;
&lt;br /&gt;
[[Category:Chrome extensions]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Hedge_Fund&amp;diff=70763</id>
		<title>Bitcoin Hedge Fund</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Hedge_Fund&amp;diff=70763"/>
		<updated>2025-05-25T17:49:32Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The first hedge fund to be exclusively financed with [[bitcoin]] (BTC). This fund is designed to give a return for people who want to use BTC as an investment tool while significantly mitigating the volatility of the value of BTC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font style=&amp;quot;color:red;&amp;quot;&amp;gt;NOTE - The site does not list any address or list its location.  The website domain is privacy protected and was registered just ten days before launch. The launch announcement was made by a forum member using an account that shows having joined the bitcoin forum community a few weeks prior.  It isn&#039;t shown who will manage the fund.  Proceed at your own risk.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Invests in a diversified group of exchange-traded funds (ETFs), domestic and international bonds, and derivatives (mainly stock options).&lt;br /&gt;
&lt;br /&gt;
The purpose of the fund is the long-term capital appreciation that outpaces the S&amp;amp;P 500.&lt;br /&gt;
&lt;br /&gt;
Bitcoins received by the fund are converted to USD.  &lt;br /&gt;
&lt;br /&gt;
To maintain stability and liquidity, initial deposits may not be withdrawn for a period ranging from 21 to 90 days, depending on how early the deposit was made.  Withdrawals are in the form of BTCs and are sent to the bitcoin address associated with the account.&lt;br /&gt;
&lt;br /&gt;
This site was launched on June 24, 2011&amp;lt;ref&amp;gt;[http://bitcointalk.org/index.php?topic=21799.0 Announcing the Bitcoin Hedge Fund]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Fees==&lt;br /&gt;
&lt;br /&gt;
There will be no management fees through 2011. A small management fee may be initiated in 2012 (with prior notification) of up to 1%. There is no front-load fee, but there will be a back-load fee of 2%&amp;lt;ref&amp;gt;[http://bitcoinhedgefund.com/how-it-works How It Works]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [http://bitcoinhedgefund.com Bitcoin Hedge Fund] website&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Investing]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Marketers&amp;diff=70762</id>
		<title>Bitcoin Marketers</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Marketers&amp;diff=70762"/>
		<updated>2025-05-25T17:48:50Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Bitcoinmarketers.png]]&lt;br /&gt;
&lt;br /&gt;
Bitcoin Marketers is a full-service [[Bitcoin]] creative digital agency.&lt;br /&gt;
&lt;br /&gt;
==Services Offered==&lt;br /&gt;
*Website design&lt;br /&gt;
*Front end development&lt;br /&gt;
*Search engine optimization&lt;br /&gt;
*Logo, booth, and promotional design&lt;br /&gt;
*Landing pages, conversion optimization&lt;br /&gt;
*Analytics dashboards, a/b testing&lt;br /&gt;
*Currency trading / market making&lt;br /&gt;
*Mining&lt;br /&gt;
*News articles, press releases&lt;br /&gt;
*Consulting, networking, advice&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
Founded in 2013.  Team largely consists of web developers, designers, internet marketers, journalists and currency traders.&lt;br /&gt;
&lt;br /&gt;
==Past Clients==&lt;br /&gt;
&lt;br /&gt;
*CAVIRTEX&lt;br /&gt;
*QuadrigaCX&lt;br /&gt;
*Cointrader&lt;br /&gt;
*Vault of Satoshi&lt;br /&gt;
*Coins-e&lt;br /&gt;
*Toronto Bitcoin Expo 2014&lt;br /&gt;
*Clearly Canadian&lt;br /&gt;
*Bitcoin Maps&lt;br /&gt;
*Pocket POS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
http://bitcoinmarketers.com - Full Service Bitcoin Marketing Agency&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;br /&gt;
[[Category:Introduction]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Monitor&amp;diff=70761</id>
		<title>Bitcoin Monitor</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Monitor&amp;diff=70761"/>
		<updated>2025-05-25T17:46:10Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Visualizes the activities on the [[Bitcoin]] network: Coins being moved around (transactions), recording and tamper-proofing the history of events (block creation) and exchanges with other currencies taking place (currency trade).&lt;br /&gt;
&lt;br /&gt;
The service was announced on February 6, 2011&amp;lt;ref&amp;gt;[http://www.bitcoin.org/smf/index.php?topic=3218.0 Bitcoin Monitor: web-based live ticker for activity on the Bitcoin network]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [http://www.bitcoinmonitor.com Bitcoin Monitor] web site&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_News&amp;diff=70760</id>
		<title>Bitcoin News</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_News&amp;diff=70760"/>
		<updated>2025-05-25T17:45:46Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A blog which contains the major news relating to [[Bitcoin]].&lt;br /&gt;
&lt;br /&gt;
Its Twitter feed shows a more complete coverage of happenings.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [http://www.bitcoinnews.com BitcoinNews.com] web site&lt;br /&gt;
* Twitter: [http://twitter.com/bitcoinnews @BitcoinNews]&lt;br /&gt;
* [http://feedburner.google.com/fb/a/mailverify?uri=bitcoinnews/VUCh Daily Summary] Subscribe to receive a daily summary of posts, delivered to your inbox&lt;br /&gt;
&lt;br /&gt;
[[Category:Blogs]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_News_Magazine&amp;diff=70759</id>
		<title>Bitcoin News Magazine</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_News_Magazine&amp;diff=70759"/>
		<updated>2025-05-25T17:44:53Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A blog and website for breaking [[bitcoin]] and cryptocurrency news.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
Content started appearing on the magazine&#039;s website in March, 2015.  &lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [https://bitcoinnewsmagazine.com Bitcoin News Magazine] website&lt;br /&gt;
* Twitter: [http://twitter.com/allegro101 @allegro101]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;br /&gt;
[[Category:Introduction]]&lt;br /&gt;
[[Category:Blogs]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_NostrAdamus&amp;diff=70758</id>
		<title>Bitcoin NostrAdamus</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_NostrAdamus&amp;diff=70758"/>
		<updated>2025-05-25T17:44:03Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bitcoin NostrAdamus ==&lt;br /&gt;
Bitcoin NostrAdamus is an analytical tool developed by the team of CoinsFriendly.com. It allows to make short-, medium- and long-term forecasts on [[Bitcoin]] price fluctuation with high degree of accuracy by indicating whether the trend is going up or down in relation to the current price and by how much the price may change.&lt;br /&gt;
&lt;br /&gt;
=== Supported Exchanges ===&lt;br /&gt;
Currently Bitcoin NostrAdamus has forecasts for the following exchanges:&lt;br /&gt;
* BTC-e&lt;br /&gt;
* Bitstamp&lt;br /&gt;
* BTC China&lt;br /&gt;
&lt;br /&gt;
=== External links ===&lt;br /&gt;
&lt;br /&gt;
[https://nostradamus.coinsfriendly.com Bitcoin NostrAdamus] web site&lt;br /&gt;
&lt;br /&gt;
[https://twitter.com/bitcoin_trend Bitcoin forecasts on Twitter]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Porn&amp;diff=70757</id>
		<title>Bitcoin Porn</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Porn&amp;diff=70757"/>
		<updated>2025-05-25T17:43:28Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Bitcoin Porn&#039;&#039;&#039; is an adult Bitcoin related image and news blog.  The site boasts to be both Ad Free and Pop Up Free using [https://en.bitcoin.it/wiki/Browser_Bitcoin_Miner Browser Bitcoin Mining].  Through the day are postings of pornographic content both video and still images, while [[Bitcoin]] related current news, web comics, and the [http://bitcoinporncast.tumblr.com Bitcoin Porncast] are featured.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
As of April 21, 20112 this site appears to no longer be publishing.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://bitcoinporn.tumblr.com Bitcoin Porn]&lt;br /&gt;
* [http://bitcoinporncast.tumblr.com Bitcoin Porn Podcast]&lt;br /&gt;
* [http://twitter.com/bitcoinporn Bitcoin Porn Twitter]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Press_Center&amp;diff=70756</id>
		<title>Bitcoin Press Center</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Press_Center&amp;diff=70756"/>
		<updated>2025-05-25T17:42:56Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A community site that provides bitcoin expert contacts for the global press and media.&lt;br /&gt;
&lt;br /&gt;
Launched by Andreas Antonopoulos as a sensible reaction to the bitter infighting regarding potential press contacts within the community, this resource supports multiple languages and time zones as well as targeted searches of individuals that have expressed a willingness to be available for media interviews. &lt;br /&gt;
&lt;br /&gt;
Nominations for [[Bitcoin]] experts accepted with the only criteria being accuracy of their stated credentials and confirmation that they want to be listed.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [http://bitcoinpresscenter.org BitcoinPressCenter.org] website&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Prices_(extension)&amp;diff=70755</id>
		<title>Bitcoin Prices (extension)</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Prices_(extension)&amp;diff=70755"/>
		<updated>2025-05-25T17:42:23Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Firefox extension displaying current [[Bitcoin]] prices.&lt;br /&gt;
==Author==&lt;br /&gt;
Corey Farwell&lt;br /&gt;
==External Links==&lt;br /&gt;
* install: [https://addons.mozilla.org/en-US/firefox/addon/none/ Bitcoin Prices] Mozilla.org addons&lt;br /&gt;
* source: [https://github.com/frewsxcv/Bitcoin-Prices Bitcoin prices] GitHub&lt;br /&gt;
&lt;br /&gt;
[[Category:Firefox extensions]]&lt;br /&gt;
[[Category:Open Source]]&lt;br /&gt;
[[Category:License/GPLv3]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoincloudservices&amp;diff=70754</id>
		<title>Bitcoincloudservices</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoincloudservices&amp;diff=70754"/>
		<updated>2025-05-25T17:41:38Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bitcoin Cloud Services (BTC Cloud Services LTD) is a Bitcoin Foundation Silver Member and UK incorporated entity. They provide affordable [https://www.bitcoinmining.com/best-bitcoin-cloud-mining-contract-reviews/ Bitcoin cloud mining contracts] with live technical Support, no hidden fees, and instant mining contract delivery. [[Bitcoin]] cloud services sells hashing power by the gigahash (GH/s), has no pool fees, and offers daily payouts.&lt;br /&gt;
&lt;br /&gt;
Bitcoin Cloud Services sells hashing power by the Gighash (GH/s)&lt;br /&gt;
Contract length is 5 years&lt;br /&gt;
Minimum contract purchase of 50 GH/s&lt;br /&gt;
Maximum contract purchase of 70 TH/s&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* Website [https://www.bitcoincloudservices.com/ Bitcoincloudservices.com]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Mining contractors]]&lt;br /&gt;
[[Category:Mining]]&lt;br /&gt;
[[Category:Mining contracts]]&lt;br /&gt;
[[Category:ASIC mining]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoini.com&amp;diff=70753</id>
		<title>Bitcoini.com</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoini.com&amp;diff=70753"/>
		<updated>2025-05-25T17:40:16Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://bitcoini.com/ Bitcoini.com] is the only Bulgaria-based market place for Bitcoin exchange in the country and worldwide. The primary aim of the website is to popularize [[Bitcoin]] and offer a quick, cheap and secure way to sell or purchase Bitcoins. Bitcoini.com offers various methods for purchasing/selling bitcoins depending on the location of the buyer/seller: bank transfer (Bulgarian or Romanian bank), ePay (financial transactions system in Bulgaria), Econt (Bulgarian courier service), Bulgarian Posts (Postal order), and “in cash” (only for the territory of Sofia), Western Union and MoneyGram (for international customers).&lt;br /&gt;
The only payment method available in Romania is bank transfer in EUR. Internationally,&lt;br /&gt;
[https://bitcoini.com/ Bitcoini.com] offers only a “buy” service for bitcoins in USD, using Western Union or MoneyGram.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Buy bitcoins ==&lt;br /&gt;
&lt;br /&gt;
===Buying process for international customers (in USD)===&lt;br /&gt;
&lt;br /&gt;
The user needs to register at bitcoini.com and place an order through their profile. The order can be placed only after the user enters an amount of bitcoins he is willing to buy (minimum 0.5 BTC), provides a valid Bitcoin address and selects either “Western Union” or “MoneyGram” as a payment method.&lt;br /&gt;
For both payment options the user needs to follow the same instructions, namely:&lt;br /&gt;
&lt;br /&gt;
1. Place an order, determining the amount of bitcoins he is willing to purchase, provide a valid Bitcoin wallet address and select one of the two payment options.&lt;br /&gt;
&lt;br /&gt;
2. Visit a Western Union or MoneyGram office and transfer the amount that is mentioned in the order.&lt;br /&gt;
(He can view the payment details after he places the order)&lt;br /&gt;
&lt;br /&gt;
3. After initiating the transfer, Western Union/MoneyGram will provide the user with a MTCN number.&lt;br /&gt;
&lt;br /&gt;
4. The user needs to submit this number to bitcoini.com, using the fill-in from that will automatically appear in the newly created order, together with the name under which the money transfer has been made.&lt;br /&gt;
&lt;br /&gt;
Once and MTCN and a valid name have been submitted by the user, bitcoini.com will use this information to acquire the cash from a Western Union/ MoneyGram office. The user&#039;s order will be fulfilled and the bitcoins will be sent to his bitcoin wallet address only after the money is physically acquired by [https://bitcoini.com bitcoini.com].&lt;br /&gt;
&lt;br /&gt;
For faster order fulfillment it is recommended that users use the services of Western Union.&lt;br /&gt;
&lt;br /&gt;
===Buying process in Bulgaria (in BGN)===&lt;br /&gt;
&lt;br /&gt;
The user needs to register at bitcoini.com and place an order through their profile. The order can be placed only after the user enters an amount of bitcoins he is willing to buy (minimum 0.1 BTC), provides a valid Bitcoin address and choses from one of the following payment methods:&lt;br /&gt;
&lt;br /&gt;
====Bank transfer====&lt;br /&gt;
After entering an amount of bitcoins for purchase, submitting a valid Bitcoin wallet address and selecting “bank transfer” as a payment option, the user needs to transfer the amount mentioned in the order to a bank account, which will be provided after the order is placed. After the transfer is completed and the money has arrived on the bank account of bitcoini.com, the bitcoins are send to the user’s Bitcoin wallet address.&lt;br /&gt;
&lt;br /&gt;
====EasyPay====&lt;br /&gt;
After entering an amount of bitcoins for purchase, submitting a valid Bitcoin wallet address and selecting “EasyPay” as a payment option, the user has two options: either to visit an office of EasyPay and initiate an order to the Clinet ID of bitcoini.com (provided after the order is placed) or to transfer the funds directly through ePay, a Bulgarian electronic payments system (this option requires a valid ePay account with a registered debit/credit card). After the money has arrived at bitcoini.com account at ePay, the bitcoins are send to the user.&lt;br /&gt;
&lt;br /&gt;
====Econt====&lt;br /&gt;
After entering an amount of bitcoins for purchase, submitting a valid Bitcoin wallet address and selecting “Econt” as a payment option, the user needs to visit an office of Econt and initiate a money order using the details, provided to him after placing the order.&lt;br /&gt;
&lt;br /&gt;
====Bulgarian Posts====&lt;br /&gt;
After entering an amount of bitcoins for purchase, submitting a valid Bitcoin wallet address and selecting “Postal order” as a payment option, the user needs to visit an office of Bulgarian Posts and initiate a money order using the details, provided to him after placing the order.&lt;br /&gt;
&lt;br /&gt;
====Payment in cash====&lt;br /&gt;
This payment option is available only for the territory of Sofia. After entering an amount of bitcoins for purchase, submitting a valid Bitcoin wallet address and selecting “Cash” as a payment option, the user needs to contact bitcoini.com using either the online chat service or the phone number that will be provided to him after placing the order.&lt;br /&gt;
&lt;br /&gt;
===Buying process in Romania (in RON)===&lt;br /&gt;
&lt;br /&gt;
The user needs to register at bitcoini.com and place an order through their profile. The order can be placed only after the user enters an amount of bitcoins he is willing to buy (minimum 0.1 BTC), provides a valid Bitcoin address and selects “Bank transfer” as a payment method.&lt;br /&gt;
&lt;br /&gt;
The user needs to visit a bank and make a money transfer to the bank account of bitcoini.com in Romania (details will be provided after placing an order). After the money has successfully arrived in that bank account, the relevant amount of bitcoins is sent to the user.&lt;br /&gt;
&lt;br /&gt;
==Sell bitcoins==&lt;br /&gt;
&lt;br /&gt;
===Selling process for Bulgaria (in BGN)===&lt;br /&gt;
&lt;br /&gt;
The user needs to register at bitcoini.com and place an order through their profile. The order can be placed only after the user enters an amount of bitcoins he is willing to sell (minimum 0.1 BTC), transfer the bitcoins to the Bitcoin wallet address of bitcoini.com and selects a payment option. There are two ways for the user to be credited for selling his bitcoins &lt;br /&gt;
bank transfer or “in cash”&lt;br /&gt;
&lt;br /&gt;
====Bank transfer====&lt;br /&gt;
&lt;br /&gt;
The user needs to place a selling order at bitcoini.com by entering an amount he is willing to sell, sending that amount of bitcoins to the Bitcoin wallet address of the website, entering the BTC transaction number (visible after the initiation of the bitcoin transfer at the user’s Bitcoin wallet), proving first and family name, the IBAN number of his bank account, as well as the BIC code of his bank. After receiving the bitcoins at the bitcoini.com Bitcoin wallet, the money is transferred to the bank account of the user.&lt;br /&gt;
&lt;br /&gt;
====Selling in cash====&lt;br /&gt;
&lt;br /&gt;
This service is available only for the territory of Sofia. The user needs to place a selling order at bitcoini.com by entering an amount he is willing to sell, sending the bitcoins to the Bitcoin wallet address of the website, entering the BTC transaction number (visible after the initiation of the bitcoin transfer at the user Bitcoin wallet), and contacting bitcoini.com to schedule a meeting using either the online chat service or the phone number that will be provided to him, after placing the order.&lt;br /&gt;
&lt;br /&gt;
==Speed of service ==&lt;br /&gt;
The speed of the services offered by bitcoini.com depends on the time that is required for the owners of the website to be 100% certain that:&lt;br /&gt;
&lt;br /&gt;
1. In the case of a user purchasing bitcoins – the required amount, mentioned in the user’s order, has been delivered to one of the various accounts (depending on the payment method) of bitcoini.com, or have been delivered “in cash”. As soon as the 100% level of certainty that an order has been paid is reached, the bitcoins are send to the user. This can take from a couple of minutes to a maximum of 12 hours, since any order is active for only 12 hours. Payments in cash are organized at a convenient for both sides place and time.&lt;br /&gt;
&lt;br /&gt;
2. In the case of a user selling bitcoins – the bitcoins have been delivered to the Bitcoin wallet of bitcoini.com. Added to this is the time required for the bank, or in the case of international users – Western Union or MoneyGram, to process the payment, initiated in the name of the user by bitcoini.com.  Payments in cash are organized at a convenient for both sides place and time.&lt;br /&gt;
&lt;br /&gt;
==News Service==&lt;br /&gt;
&lt;br /&gt;
For Bulgarian customers, bitcoini.com offers a news service in Bulgarian, which is primarily composed of English articles translated into Bulgarian. Proper references regarding the original sources of the texts are always included. Original articles prepared by bitcoini.com are provided irregularly. &lt;br /&gt;
News services for the Romanian and English versions of the website are RSS feed-based.&lt;br /&gt;
&lt;br /&gt;
==Fees==&lt;br /&gt;
&lt;br /&gt;
Bitcoini.com determines the “buy” and “sell” prices for bitcoins on the basis of the price of other exchanges and adds a small managing fee. The buy price is usually lower than the buy price at Mt.Gox. &lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
The owners of the website are trying to provide customers with the best possible Bitcoin buying/selling service in an uncertain regulatory environment. The development of the bitcoini.com brand name demands high quality customer relations and a high level of customer satisfaction.&lt;br /&gt;
&lt;br /&gt;
==Affiliate program==&lt;br /&gt;
The website offers an affiliate program for its users, which is a good way of earning bitcoins by popularizing bitcoini.com&lt;br /&gt;
The user can use one of the pre-made banners available at the website and place it in his forum signature, on his website, or in Facebook.&lt;br /&gt;
If another user clicks on the banner, registers at bitcoini.com and makes an order, the original user earns a 2% fee from the amount of the bitcoin order of the new user.&lt;br /&gt;
Various banner sizes in English are available at: [https://bitcoini.com/en/affiliate.php?mode=banners]&lt;br /&gt;
The same banners are also available in Romanian and Bulgarian.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
[https://bitcoini.com/en/about.php FAQ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Exchanges]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoinfactswiki&amp;diff=70752</id>
		<title>Bitcoinfactswiki</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoinfactswiki&amp;diff=70752"/>
		<updated>2025-05-25T17:39:41Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: /* An Unusual Fork */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Historical Note Only ==&lt;br /&gt;
&lt;br /&gt;
The BitcoinFactsWiki has been removed from its original location; Tom Zander being its originator has resigned from the -classic project and this resignation is likely reflected in the removal of projects like the BitcoinFactsWiki.&lt;br /&gt;
&lt;br /&gt;
== An Unusual Fork ==&lt;br /&gt;
The website represented by [http://bitocinfactswiki.github.io The Bitcoinfactswiki] and announced in the Reddit story from its apparent creator [https://www.reddit.com/r/btc/comments/4n44oi/bitcoin_wiki_renamed_to_bitcoinfactswiki here] is not actually a &amp;quot;renamed&amp;quot; version of this site, but a plain fork, contrary to the claims in that story. The person behind it, Thomas Zander, is the (apparently only remaining,) developer of Bitcoin Classic.&lt;br /&gt;
&lt;br /&gt;
The facts on Bitcoinfactswiki are in multiple cases wrong and the information thereon regarding technical information about Bitcoin appears to be politically-motivated and -edited. For example, as of this writing the page [https://bitcoinfactswiki.github.io/NLockTime/ on Bitcoinfactswiki about nLockTime] states:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This tag is deprecated and OP CHECKLOCKTIMEVERIFY is the suggested replacement.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
This is incorrect. nLockTime is not deprecated nor is it insecure.&amp;lt;ref&amp;gt;[https://www.reddit.com/r/btc/comments/4uv21m/announcing_blockstreams_greenaddress_acquisition/d5t9rm8 Greg Maxwell stating clearly thet nLockTime is alive and well.]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is likely that due to the obstacle that nLockTime presents to the hard-forking narrative, it is being downplayed as a technical objection and stated to be a deprecated function even though it has been an integral part of [[Bitcoin]] [[transaction]] structure almost from Bitcoin&#039;s inception. In particular, nLockTime (or lock_time based transactions) can be used as a form of escrow. In the event of certain forms of advocated hard forks, the result would be the confiscation and/or destruction of nLockTime based escrowed funds.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoined&amp;diff=70751</id>
		<title>Bitcoined</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoined&amp;diff=70751"/>
		<updated>2025-05-25T17:38:16Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Bitcoined is a blog which discusses various Bitcoin-related topics.  ===&lt;br /&gt;
&lt;br /&gt;
The Bitcoined blog was described as being a weekly [[Bitcoin]] news and review blog with various topics relating to Bitcoin, including exchange rates, tangible items, new innovations and more. Look out for new website alerts and new shops, as well as a brand new range of information pages, including Mining, Useful Links and What is Bitcoin.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
The service never published updates.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [http://bitcoined.wordpress.com Bitcoined]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoincatalog.com&amp;diff=70750</id>
		<title>Bitcoincatalog.com</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoincatalog.com&amp;diff=70750"/>
		<updated>2025-05-25T17:37:41Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Directory ==&lt;br /&gt;
&lt;br /&gt;
BitcoinCatalog&#039;s primary objective is to provide the Bitcoin community with a definitive directory of sites that either accept Bitcoins for goods and services or offer Bitcoin-related information, software or currency exchange. The site is similar to a yellow pages directory for [[Bitcoin]]. BitcoinCatalog is organized into categories to make it easy to find whatever one is looking for and to help people discover whatever they are looking for in the Bitcoin community all around the world.&lt;br /&gt;
&lt;br /&gt;
Adding your site to the directory is absolutely free, so if you accept Bitcoins or have a Bitcoin-related site, you can add it to the directory. There are clear directions for adding your site [http://bitcoincatalog.com/policies/getting-listed here].&lt;br /&gt;
&lt;br /&gt;
=== Information &amp;amp; Resources ===&lt;br /&gt;
&lt;br /&gt;
In addition, BitcoinCatalog has other areas of the site to help bring together resources and tools to help the Bitcoin community keep up with all the latest news and information surrounding Bitcoins. There are news feeds, blogs and links to other informative sites. BitcoinCatalog encourages visitors to submit their articles and commentaries. To submit an article, click [http://bitcoincatalog.com/contact-us here].&lt;br /&gt;
&lt;br /&gt;
=== Community ===&lt;br /&gt;
&lt;br /&gt;
BitcoinCatalog has also built a Facebook-like social network for the Bitcoin [http://bitcoincatalog.com/news-feeds/home community]. Everyone that registers gets a free profile so they can get to know others from around the globe, upload galleries, write blogs and create or join user groups. Bitcoin enthusiasts can also network and chat with other members. In addition to the social community, they offer a [http://bitcoincatalog.com/forum/main-forum/categories forum] where people can seek out answers to Bitcoin-related questions.&lt;br /&gt;
&lt;br /&gt;
BitcoinCatalog can be contacted [http://bitcoincatalog.com/contact-us here].&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoinica&amp;diff=70749</id>
		<title>Bitcoinica</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoinica&amp;diff=70749"/>
		<updated>2025-05-25T17:36:34Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Was an online service that enabled leveraged speculation in its contract-for-difference (CFD) market against the [[Bitcoin]] to USD (BTC/USD) exchange rate.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
The service was launched on September 8, 2011&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=42267.0 Bitcoinica - Advanced Bitcoin Trading Platform]&amp;lt;/ref&amp;gt;.  On March 1st, 2012 the site suffered a significant financial loss when a web hosting had an internal security breach that gave the attacker access to a wallet in which Bitcoinica stored funds.  More than 43K bitcoins were stolen by the attacker.  The operator provided a statement that reserves were sufficient to cover the loss&amp;lt;ref&amp;gt;[http://bitcointalk.org/index.php?topic=66979.0 Bitcoinica lost 43,554 BTC from Linode compromise, suspicious TXIDs publicized]&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Announced on April 20, 2012 was that Bitcoinica had &amp;quot;reorganized&amp;quot; and was now operated as Bitcoinica LP and had become a registered Financial Services Provider&amp;lt;ref&amp;gt;[http://bitcointalk.org/index.php?topic=77523.msg861805#msg861805 Bitcoinica is now a registered Financial Services Provider!]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
On May 11, 2012 Bitcoinica suffered for the second time a security incident in which a large amount of coins were stolen from its hot wallet&amp;lt;ref&amp;gt;[http://bitcointalk.org/index.php?topic=81045.0 Bitcoinica site is taken offline for security investigation]&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
On August 1, 2012 the Wendon Group investment fund as creditor to Bitcoinica LP announced that it will appoint a receiver under New Zealand law&amp;lt;ref&amp;gt;[http://bitcointalk.org/index.php?topic=97272.0 Bitcoinica Consultancy abandons customers. Bitcoinica to enter Liquidation]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Defunct products or services]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Money&amp;diff=70748</id>
		<title>Bitcoin Money</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Money&amp;diff=70748"/>
		<updated>2025-05-25T09:14:55Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Bitcoin Money&#039;&#039;&#039; is a blog relating to various financial aspects of Bitcoin.&lt;br /&gt;
&lt;br /&gt;
The blog&#039;s most popular post, [http://bitcoin.tumblr.com/post/2560941112/rebooting-of-money The Rebooting of Money] is an audio podcast that provides an introduction to [[Bitcoin]].&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [http://www.bitcoin.tumblr.com BitcoinMoney.com]&lt;br /&gt;
* Twitter: [http://twitter.com/bitcoinmoney @BitcoinMoney]&lt;br /&gt;
&lt;br /&gt;
[[Category:Blogs]]&lt;br /&gt;
[[Category:Investing]]&lt;br /&gt;
[[Category:Financial]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BitBuyer&amp;diff=70745</id>
		<title>BitBuyer</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BitBuyer&amp;diff=70745"/>
		<updated>2025-05-19T23:05:02Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[http://bitpoker.biz/bitbuyer/ BitBuyer]&#039;&#039;&#039; is a [[Bitcoin]] Concierge service, enabling members (and the general public) to order anything from travel reservations to pizza. They also run an affiliate program in which members can make commission on sales generated from their links, similar to the Amazon affiliates program.&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Road_Trip&amp;diff=70744</id>
		<title>Bitcoin Road Trip</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Road_Trip&amp;diff=70744"/>
		<updated>2025-05-19T21:01:49Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A coast-to-coast journey where no dollars are being spent, only bitcoins.  The trip was made by [[Bitcoin]] community member Plato between April 2011 and June 2011.&lt;br /&gt;
&lt;br /&gt;
The plans for the trip were communicated on March 21, 2011 which described the motivation and the method for traveling from Hartford to L.A. spending no dollars for expenses or other purchases&amp;lt;ref&amp;gt;[http://bitcointalk.org/?topic=4752.0 PLATO&#039;s Bitcoin Road Trip]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The trip is being blogged and tweeted.  Tweets use the hashtag #BItcoinRoadTrip.&lt;br /&gt;
&lt;br /&gt;
While on the leg of the trip through Alabama, Plato&#039;s trip was put on hold to assist with the cleanup following the tornadoes that occurred close by to Plato.  Plato made a plea for donations from the Bitcoin community and funds were received were then donated to a tornado victim from a trailer park&amp;lt;ref&amp;gt;[http://bitcointalk.org/?topic=6752.msg101417#msg101417 ALABAMA DISASTER RELIEF FUND]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
On May 25th Plato was interviewed on the Corbett Report&amp;lt;ref&amp;gt;[http://www.youtube.com/watch?v=gcn8cNCk9hM The World&#039;s First Bitcoin Road Trip]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Plato arrived in Los Angeles on June 13th 2011&amp;lt;ref&amp;gt;[http://www.bitcoinmoney.com/post/6501258333 Plato’s #BitcoinRoadtrip has arrived in L.A.]&amp;lt;/ref&amp;gt;. The first thing he purchased with US Dollars was a broccoli cheddar breadbowl at Panera in Venice Beach.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [http://therealplato.tumblr.com/ http://therealplato.tumblr.com/] blog (with RSS at the bottom)&lt;br /&gt;
* [http://goo.gl/CflUH Map]&lt;br /&gt;
* [http://twitter.com/therealplato @TheRealPlato] Twitter account&lt;br /&gt;
* [mailto:therealplato@gmail.com therealplato@gmail.com] email&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_SMS_Alert&amp;diff=70717</id>
		<title>Bitcoin SMS Alert</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_SMS_Alert&amp;diff=70717"/>
		<updated>2025-05-19T05:30:38Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bitcoin SMS Alert is a Windows based PC application that sends SMS text alerts directly to a user&#039;s phone.  The current version obtains price information using API&#039;s from either [http://www.MtGox.com MtGox.com] or [http://www.BitcoinCharts.com BitcoinCharts.com] in three different currency denominations (USD / GBP / EUR), and will alert the user if price and/or price percent changes have have exceeded a given upper or lower bound.  Other features to prevent too many text alerts, and different update intervals are included as well.&lt;br /&gt;
&lt;br /&gt;
Unlike some other monthly services that exist, this program costs only a one time fee of $2.99 USD payable via [http://www.MtGox.com MtGox] instant [[Bitcoin|BTC]] checkout.  Updates are provided free of charge if an e-mail address is supplied upon checkout.  The author claims that custom tweaks / upgrades can be made for small donations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Current Version:&#039;&#039;&#039;  v1.1 (Made available on August 28, 2012)&lt;br /&gt;
&lt;br /&gt;
More information and a video demo can be found on the [http://www.BitcoinSMSAlert.com website].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Bitcoin_SMS_Alert_DemoPicture.jpg‎]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitbrothersllc.com&amp;diff=70716</id>
		<title>Bitbrothersllc.com</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitbrothersllc.com&amp;diff=70716"/>
		<updated>2025-05-18T22:58:43Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello Fellow Bitcoiners,&lt;br /&gt;
This is the owner of the new exchange website called bitbrothersllc.com . As a compnay, we do things differnently than most exchange companies in that we accept not only bank transfers and other forms of regular paymant, but that we accept cold hard cash mailed in orders. This allows some of our customer base to stay completely anonymous. Ironically, many of our competitors have eliminated the possiblity of staying anonymous through a transaction which was the entire point of the [[bitcoin]] buzz in the first place. We can also asure our custumers that when it comes to bitcoin exchanges, no one can parellel the customer servece in terms of speed and honesty than bitbrothersllc.com . We hope to do some exchanges with you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.bitbrothersllc.com&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_roulette&amp;diff=70715</id>
		<title>Bitcoin roulette</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_roulette&amp;diff=70715"/>
		<updated>2025-05-18T22:58:01Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Bitcoin roulette that is mostly offered in gambling and roulette sites is based on the European roulette. There are many other notable forms of roulette that include but not limited to European roulette, American Roulette, and French Roulette. These are all variations of European roulette who&#039;s differences include the addition to 0 and 00 on the table felt. The French version has variations on the layout of the board, which mirrors the sequence of numbers on the wheel instead of the numerical layout. &lt;br /&gt;
&lt;br /&gt;
When you bet on roulette with [[Bitcoin|bitcoin]]s, you will notice that you wager on inside and outside bets, just like in roulette games offered by regular online casinos. However, thanks to the use of bitcoins, the process of betting has become a lot easier.&lt;br /&gt;
&lt;br /&gt;
Some roulette sites allow players to simply send their wager directly from their BTC wallet to the dynamically registered address of their bets. This process doesn’t require a registered account. On the other hand, some gambling sites require players to create an account and deposit bitcoins so that they can place their bets.&lt;br /&gt;
&lt;br /&gt;
There are many places to play [https://www.wagerx.com/live-roulette bitcoin roulette]. When choosing an online casino you must take into consideration jurisdiction, regulations in your country or state of origin, legislation in our country, personal preferences to promotions, ease of use, and game availability.&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Report&amp;diff=70714</id>
		<title>Bitcoin Report</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Report&amp;diff=70714"/>
		<updated>2025-05-18T22:57:06Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;The Bitcoin Report&#039;&#039;&#039; was a blog focused on publishing various statistics about the state of the Bitcoin P2P network. Its content was related mainly to the examination of various bitcoin [[Transaction|transactions]] and included &#039;Top 100 Rich Lists&#039; of [[Bitcoin]] addresses by balance. &lt;br /&gt;
&lt;br /&gt;
The blog was announced on January 16th, 2011.&amp;lt;ref&amp;gt;[http://www.bitcoin.org/smf/index.php?topic=2818.0 The Bitcoin Report]&amp;lt;/ref&amp;gt; Last update was posted on December 4th, 2011. &lt;br /&gt;
&lt;br /&gt;
In September 2019 the blog was still online, although some of its charts were no longer available. &lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [http://bitcoinreport.blogspot.com Bitcoin Report] blog&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Blogs]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Slots&amp;diff=70713</id>
		<title>Bitcoin Slots</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Slots&amp;diff=70713"/>
		<updated>2025-05-18T16:57:57Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In the Bitcoin gambling community you can find the classic slots, powered by bitcoin and providing in the same time a provable fairness system. &lt;br /&gt;
&lt;br /&gt;
Most [[Bitcoin]] dice betting sites boast of their provable fairness. With provably fair gaming in existence, you can verify both your own spins and those of anyone else at any point.&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Slots&amp;diff=70712</id>
		<title>Bitcoin Slots</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Slots&amp;diff=70712"/>
		<updated>2025-05-18T16:57:26Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In the Bitcoin gambling community you can find the classic slots, powered by bitcoin and providing in the same time a provable fairness system. &lt;br /&gt;
&lt;br /&gt;
Most [[Bitcoi]] n dice betting sites boast of their provable fairness. With provably fair gaming in existence, you can verify both your own spins and those of anyone else at any point.&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Sports_Trade&amp;diff=70711</id>
		<title>Bitcoin Sports Trade</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Sports_Trade&amp;diff=70711"/>
		<updated>2025-05-18T16:12:59Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.bitcoinsportstrade.com Bitcoin Sports Trade] is a new user vs user bet matching site.&lt;br /&gt;
&lt;br /&gt;
This betting platform lets you to choose your own point totals at even odds. This gives players the power to dictate what the ‘true’ line is.&lt;br /&gt;
&lt;br /&gt;
To simplify this concept think of it in terms of a bitcoin exchange (like bitstamp, campbx, coinbase , ect) in the sense that there is no actual “Real” set price of [[Bitcoin|BTC]], the price is determined by the supply and demand of the customers and a recommended price is then set on the exchange based on what the last trade(s) closed at. This is how players determine what the “True” line is, just like a bitcoin exchange does.&lt;br /&gt;
&lt;br /&gt;
No Juice!&lt;br /&gt;
&lt;br /&gt;
In addition to being able to create your own lines you can do so without paying any additional Juice! All bets are always at even money.&lt;br /&gt;
&lt;br /&gt;
Traditional sportsbooks offer the ability to take a better number on a current line but they will charge you extra juice which can make the bet far too expensive.&lt;br /&gt;
&lt;br /&gt;
What are the fees?&lt;br /&gt;
&lt;br /&gt;
The only fee is the bet matching fee of 3.5% which is deducted from completed bets.&lt;br /&gt;
&lt;br /&gt;
Anonymous Betting&lt;br /&gt;
&lt;br /&gt;
To create an account all you need is an email address.&lt;br /&gt;
&lt;br /&gt;
Instant Payouts&lt;br /&gt;
&lt;br /&gt;
As soon as a contest is competed your account balance will reflect your winnings and you’ll be free to withdraw your BTC instantly.&lt;br /&gt;
&lt;br /&gt;
No Minimum Withdrawals&lt;br /&gt;
&lt;br /&gt;
There are no withdrawal minimums so whatever amount you win you can instantly withdraw at any time.&lt;br /&gt;
&lt;br /&gt;
No Withdrawal Fees&lt;br /&gt;
&lt;br /&gt;
There are no withdrawal fees.&lt;br /&gt;
&lt;br /&gt;
Live In-Play Betting&lt;br /&gt;
&lt;br /&gt;
Bet while you watch the game. Not only can you place bets prior to the game starting, you can bet at any point during the game. You can follow the game and make bets on the fly.&lt;br /&gt;
&lt;br /&gt;
Earn 100% Affiliate Commissions!&lt;br /&gt;
&lt;br /&gt;
The affiliate program features 100% affiliate commissions for the first month! After the first month earn up to 50% commissions by simply referring 2 new members each month. All commissions are paid in BTC.&lt;br /&gt;
&lt;br /&gt;
Your Commission Earnings are Paid Out Instantly!&lt;br /&gt;
&lt;br /&gt;
Unlike traditional affiliate programs that usually take over a month to get paid, commissions are paid out as soon as you earn it! Your account balance is credited instantly.&lt;br /&gt;
&lt;br /&gt;
Visit [http://www.bitcoinsportstrade.com Bitcoin Sports Trade] for more information and to create an account.&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Stock_Exchange&amp;diff=70710</id>
		<title>Bitcoin Stock Exchange</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Stock_Exchange&amp;diff=70710"/>
		<updated>2025-05-18T15:20:26Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Bitcoin Stock Exchange(BSE) is an online trading platform intended to provide a venue from which Bitcoin related stocks can be issued, bought and sold, using Bitcoin exclusively. We welcome anyone to open an account, whether it be as a trader or as a company. No initial cost or fees are required to do so.&lt;br /&gt;
&lt;br /&gt;
The idea that held promise of the BSE was conceived in spring 2011, and after undergoing some time in the developmental stages, it came to fruition in the summer 2013. Thus beginning to take shape as the exchange we see today.&lt;br /&gt;
&lt;br /&gt;
The general philosophy behind the exchange is to help catalyze progression in the development of the [[Bitcoin]] infrastructure, thus solidifying Bitcoin as a practical means of exchange instead of only being the mere vessel of pure price speculation.&lt;br /&gt;
&lt;br /&gt;
===External links===&lt;br /&gt;
[http://www.bitcoinstockexchange.org/ Bitcoin Stock Exchange Website]&lt;br /&gt;
&lt;br /&gt;
[http://forum.bitcoinstockexchange.org/ Bitcoin Stock Exchange Forum]&lt;br /&gt;
&lt;br /&gt;
[[Category:Defunct exchanges]]&lt;br /&gt;
[[Category:Investing]]&lt;br /&gt;
[[Category:Stock Exchanges]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Text_Message&amp;diff=70709</id>
		<title>Bitcoin Text Message</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Text_Message&amp;diff=70709"/>
		<updated>2025-05-18T15:19:31Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bitcoin Text Message is a simple Web based service which offers to send SMS alerts to registered users mobile phones when the price of [[bitcoin]] changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Website address&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.bitcointextmessage.com/ &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Site was launched on 23-Feburary-2013&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Current Features&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Notify user when Mt Gox exchange rate goes above a threshold.&lt;br /&gt;
&lt;br /&gt;
Notify user when Mt Gox exchange rate goes below a threshold.&lt;br /&gt;
&lt;br /&gt;
SMS price alerts on bitcoin price changes to your mobile phone&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Ticker&amp;diff=70708</id>
		<title>Bitcoin Ticker</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Ticker&amp;diff=70708"/>
		<updated>2025-05-18T15:18:38Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Keeps track of the current [[Bitcoin]] market prices - Chrome extension.&lt;br /&gt;
Detailed market information, collected in real time from:&lt;br /&gt;
* https://mtgox.com&lt;br /&gt;
* https://www.tradehill.com&lt;br /&gt;
* https://bitcoin7.com&lt;br /&gt;
* https://bitomat.pl&lt;br /&gt;
* https://britcoin.co.uk&lt;br /&gt;
==This extension can access==&lt;br /&gt;
Your data on:&lt;br /&gt;
* Sites above&lt;br /&gt;
==External Links==&lt;br /&gt;
* [https://chrome.google.com/webstore/detail/bkjcngcenokaadmhbmcokmkanjibmmje Bitcoin Ticker]&lt;br /&gt;
&lt;br /&gt;
[[Category:Chrome extensions]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Venezuela&amp;diff=70707</id>
		<title>Bitcoin Venezuela</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Venezuela&amp;diff=70707"/>
		<updated>2025-05-18T15:17:17Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: /* Generador de billetes/cheques en jQuery */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://bitcoinvenezuela.com Bitcoin Venezuela] fue creada el día 11 Octubre de 2012 para dar a conocer Bitcoin en Venezuela. Con presencia en España y Venezuela, tenemos el objetivo principal de dar a conocer esta nueva forma de pago y orientar a los nuevos usuarios.&lt;br /&gt;
&lt;br /&gt;
== Nosotros ==&lt;br /&gt;
&lt;br /&gt;
Bitcoin Venezuela es un proyecto para crear presencia de los bitcoins en este país. Nuestro objetivo principal es dar a conocer la moneda en Venezuela y establecer unas bases de conversiones para quienes las quieran seguir a las monedas internacionales.&lt;br /&gt;
&lt;br /&gt;
== Venezuela ==&lt;br /&gt;
&lt;br /&gt;
Venezuela se encuentra actualmente bajo un régimen socialista-comunista en el que existen restricciones para la adquisición de divisas y esto dificulta la compra/venta de productos extranjeros, así como la salida de dinero del país para viajes, compras o ahorros.&lt;br /&gt;
&lt;br /&gt;
Al existir un control cambiario la cantidad de divisas (dólares, euros...) que puede adquirir una persona a precio de mercado es excesivamente limitada; disparándose así el precio, debido a la alta demanda, de estas modenas extranjeras en el mercado paralelo.&lt;br /&gt;
El precio actual del Dólar regulado (Dólar CADIVI) es de 4,29 Bs [http://bitcoinvenezuela.com/venezuela.php (ver precio actualizado)], pero comprarlos en la calle a este precio es imposible. El precio que se maneja es el del Dólar Paralelo (Dólar Permuta, Lechugas...) que ronda los 13,95 Bs [http://bitcoinvenezuela.com/venezuela.php (ver precio actualizado)].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Servicios y herramientas ==&lt;br /&gt;
&lt;br /&gt;
=== Generador de billetes/cheques en jQuery ===&lt;br /&gt;
&lt;br /&gt;
Existen algunas herramientas para generar billetes/cheques de Bitcoin para poder usarlos como pago físico, pero estas están recibiendo muchas críticas debido al uso de lenguajes de programación que funcionan desde el servidor (PHP, Python, etc) y el miedo que esto supone al existir la posibilidad de enviar los datos al servidor.&lt;br /&gt;
&lt;br /&gt;
Bitcoin Venezuela ha creado una herramienta que funciona con jQuery y por tanto ningún dato introducido en el formulario es enviado al servidor para la creación del billete. Al usar jQuery funciona desde el navegador cliente y no es necesario instalarlo en un servidor para funcionar. Se puede utilizar sin conexión a internet para mayor seguridad una vez cargada la página.&lt;br /&gt;
&lt;br /&gt;
Consiste en dos campos de texto, uno para la Dirección [[Bitcoin]] y otro para la Llave Privada. Una vez introducidos se genera el billete y simplemente hay que imprimirlo.&lt;br /&gt;
&lt;br /&gt;
[http://bitcoinvenezuela.com/billete.html Ir al generador]&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
* [http://bitcoinvenezuela.com Bitcoin Venezuela] - web oficial&lt;br /&gt;
* [mailto:contacto@bitcoinvenezuela.com Contacto] - email [http://pool.sks-keyservers.net:11371/pks/lookup?op=vindex&amp;amp;search=0x637E773CF6DDEE8F009F84616930CFE70FA4130C (PGP)]&lt;br /&gt;
* [https://twitter.com/btcven @btcven] - Twitter&lt;br /&gt;
* [https://www.facebook.com/btcven Página de Facebook]&lt;br /&gt;
* [https://plus.google.com/103832285759023829835/posts Google+]&lt;br /&gt;
* [https://bitcointalk.org/index.php?action=profile;u=70647 Usuario en Bitcointalk]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Wednesday&amp;diff=70706</id>
		<title>Bitcoin Wednesday</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Wednesday&amp;diff=70706"/>
		<updated>2025-05-18T15:14:44Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: /* Start Your Own Local Community */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bitcoin Wednesday is a global meetup event scheduled for the first Wednesday of every month.&lt;br /&gt;
&lt;br /&gt;
The [https://bitcointalk.org/index.php?topic=248358.msg2635123#msg2635123 genesis] of this event was a forum post highlighting the coincidental synchronicity of nearly a dozen local bitcoin meetups.&lt;br /&gt;
&lt;br /&gt;
If you are a member of any of the [https://en.bitcoin.it/wiki/Meetups local bitcoin meetups], you should make every effort to promote a special meeting for Bitcoin Wednesday.&lt;br /&gt;
&lt;br /&gt;
Add your city here, or on [https://bitcointalk.org/index.php?topic=248358.msg2635123#msg2635123 the discussion for this event].&lt;br /&gt;
&lt;br /&gt;
==Start Your Own Local Community==&lt;br /&gt;
# &#039;&#039;&#039;Find a good location&#039;&#039;&#039;. It helps if the meeting place is accessible, has WiFi, and food and beverages. The merchant does not have to accept Bitcoin yet.&lt;br /&gt;
# &#039;&#039;&#039;Add your city to the list&#039;&#039;&#039;. Also announce your meetings in the [https://bitcointalk.org/index.php?topic=248358.msg2635123#msg2635123 forum topic].&lt;br /&gt;
# &#039;&#039;&#039;Invite local Bitcoin people&#039;&#039;&#039;.  Some great resources to find locals are [http://bitcoins.meetup.com Meetup.com], and [http://LocalBitcoins.com LocalBitcoins.com]. You may also find numerous regional groups on social media sites like [http://reddit.com/r/bitcoin Reddit], Facebook, and Google Plus.&lt;br /&gt;
# &#039;&#039;&#039;Show up and have fun&#039;&#039;&#039;. If the meeting spot merchant will allow it, consider making a banner/display that identifies your group as [[Bitcoin]] friendly. This will advertise your presence to other patrons and generate more interest.&lt;br /&gt;
&lt;br /&gt;
==Event Agenda Ideas==&lt;br /&gt;
* Socialize with other great people interested in Bitcoin: Newcomers, gurus and early pioneers, writers, entrepreneurs, economists, investors, activists, etc. Celebrities have been known to drop in on these events. Don&#039;t see someone you think should be there, just bring them along.&lt;br /&gt;
&lt;br /&gt;
* Learn more and teach others.&lt;br /&gt;
&lt;br /&gt;
* Buy, sell, barter.  Keep the coins circulating in the community.&lt;br /&gt;
&lt;br /&gt;
* Talk about how to spread Bitcoin to more people, more businesses.&lt;br /&gt;
&lt;br /&gt;
* Engage in fascinating conversations.&lt;br /&gt;
&lt;br /&gt;
* Demonstrate or pitch your latest Bitcoin project.&lt;br /&gt;
&lt;br /&gt;
* Hold presentations and debates.&lt;br /&gt;
&lt;br /&gt;
* Indulge in good food and drink.&lt;br /&gt;
&lt;br /&gt;
==Cities With Bitcoin Wednesday==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! City !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.meetup.com/BitcoinWednesday/ Amsterdam] || Talks and drinks organized by [https://www.BitcoinWednesday.com Bitcoin Wednesday]&lt;br /&gt;
|-&lt;br /&gt;
| [http://BitcoinsInVegas.com Las Vegas] || Bitcoin Lunch Mobs every Wednesday&lt;br /&gt;
|-&lt;br /&gt;
| Sydney || General Bitcoin-related discussion.&lt;br /&gt;
|-&lt;br /&gt;
| Vancouver || General Bitcoin-related discussion.&lt;br /&gt;
|-&lt;br /&gt;
| Munich || General Bitcoin-related discussion.&lt;br /&gt;
|-&lt;br /&gt;
| Pittsburgh || General Bitcoin-related discussion.&lt;br /&gt;
|-&lt;br /&gt;
| Toronto || General Bitcoin-related discussion.&lt;br /&gt;
|-&lt;br /&gt;
| Austin || General Bitcoin-related discussion.&lt;br /&gt;
|-&lt;br /&gt;
| Paris || General Bitcoin-related discussion.&lt;br /&gt;
|-&lt;br /&gt;
| Buenos Aires || General Bitcoin-related discussion.&lt;br /&gt;
|-&lt;br /&gt;
| Cinncinnatti || General Bitcoin-related discussion.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.meetup.com/bitcoin Stockholm] || Lunch with general Bitcoin-related discussion.&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bitcoin_Yellow_Pages&amp;diff=70705</id>
		<title>Bitcoin Yellow Pages</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bitcoin_Yellow_Pages&amp;diff=70705"/>
		<updated>2025-05-17T22:21:00Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bitcoin Yellow Pages is a leader in search, design, and advertising for Bitcoin business. The site offers a completely free search directory for users to locate [[Bitcoin]] businesses based on keyword, location, or category. Users can browse the globe using the world map feature to find businesses accepting bitcoin payments close by. Companies are able to list themselves for free on the site by simply registering and following several simple steps. Additional services include graphic design, web design, branding, and creative development for Bitcoin businesses.&lt;br /&gt;
&lt;br /&gt;
The site was launched in July, 2013. The site aims to contain more listings with higher quality details than any other directory service.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [https://bitcoinyellowpages.com Bitcoin Yellow Pages]&lt;br /&gt;
* [https://bitcoinyellowpages.com/free-business-listing/ Bitcoin Yellow Pages - Design and Development]&lt;br /&gt;
* [https://bitcoinyellowpages.com/design-and-development/ Bitcoin Yellow Pages - List Your Business]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BitcoinSentiment&amp;diff=70704</id>
		<title>BitcoinSentiment</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BitcoinSentiment&amp;diff=70704"/>
		<updated>2025-05-17T20:05:20Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;BitcoinSentiment&#039;&#039;&#039; is a non-profit, ad-free site tracking the voter&#039;s sentiment towards [[Bitcoin]] through the means of continuous polling. The idea is to provide the technical means required for tapping into the power of crowd-sourcing. &lt;br /&gt;
&lt;br /&gt;
The quality of the data increases as the number of voters increases and you can contribute, by putting voting widgets on your site. To encourage the use of widgets, they are designed to be non-intrusive and to not &amp;quot;steal your visitors&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The data generated on the site is free for use and can be downloaded by anyone.&lt;br /&gt;
&lt;br /&gt;
The site offers a variety of charts, with the purchasing power of Bitcoin plotted in terms of other asset classes such as gold and inflation-protected US Treasuries.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*[http://bitcoinsentiment.com/ BitcoinSentiment website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Trading]]&lt;br /&gt;
[[Category:Investing]]&lt;br /&gt;
[[Category:Economics]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=OpenVMarket&amp;diff=70703</id>
		<title>OpenVMarket</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=OpenVMarket&amp;diff=70703"/>
		<updated>2025-05-17T19:38:13Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A service where job seekers can post resumes and search job listings and where employers can search resumes and post job listings.&lt;br /&gt;
&lt;br /&gt;
The site lists its mission is to foster the [[Bitcoin]] ecosystem with the latest technologies in hopes of creating a larger Open Virtual Market for a more Social and Rich Internet for the future.&lt;br /&gt;
&lt;br /&gt;
The site can be cutomized to store Searches and Jobs. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://www.OpenVMarket.com OpenVMarket] web site&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Uc_bitcoin&amp;diff=70701</id>
		<title>Uc bitcoin</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Uc_bitcoin&amp;diff=70701"/>
		<updated>2025-05-17T16:09:30Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;uc_bitcoin&#039;&#039;&#039; is a [[Bitcoin]] payment method for the Ubercart shopping cart for Drupal.&lt;br /&gt;
&lt;br /&gt;
uc_bitcoin is free and unencumbered public domain software.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [http://github.com/mikegogulski/uc_bitcoin uc_bitcoin] on Github&lt;br /&gt;
* [http://www.nostate.com/3955/uc_bitcoin-a-bitcoin-payment-method-for-ubercartdrupal Project homepage]&lt;br /&gt;
&lt;br /&gt;
[[Category:Shopping Cart Interfaces]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Unichange.me&amp;diff=70700</id>
		<title>Unichange.me</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Unichange.me&amp;diff=70700"/>
		<updated>2025-05-17T16:08:42Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: /* Buy options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Exchanges]]&lt;br /&gt;
&lt;br /&gt;
==Unichange.me==&lt;br /&gt;
&lt;br /&gt;
Unichange.me is created to serve all people willing to make fast, secure and reliable buy, sell or exchange operations with Bitcoin.&lt;br /&gt;
Its team consists of experienced players of e-currency exchange market, striving to provide high-level of work to our clients. Unichange.me staff members have more than 8 years of experience in financial sphere.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
&lt;br /&gt;
* Highly secured transactions: SSL encryption is used for all orders placed on the website.&lt;br /&gt;
* Large reserves: amount of reserves is appropriate for any bulk buyer or wholesaler.&lt;br /&gt;
* Reliable service: All orders of Unichange.me are completed in a timely manner and on the conditions stated on the website.&lt;br /&gt;
&lt;br /&gt;
==Buy options==&lt;br /&gt;
&lt;br /&gt;
Unichange.me offers the clients wide variety of [[Bitcoin]] wallet deposit methods - Perfect Money USD/EUR, OkPay USD, FasaPay USD, JustForex USD.&lt;br /&gt;
&lt;br /&gt;
[https://unichange.me/order/simple/perfect_money_usd_bitcoin Perfect Money USD]&lt;br /&gt;
&lt;br /&gt;
[https://unichange.me/order/simple/perfect_money_eur_bitcoin Perfect Money EUR]&lt;br /&gt;
&lt;br /&gt;
[https://unichange.me/order/simple/okpay_usd_bitcoin OkPay USD]&lt;br /&gt;
&lt;br /&gt;
[https://unichange.me/order/simple/fasapay_usd_bitcoin FasaPay USD]&lt;br /&gt;
&lt;br /&gt;
[https://unichange.me/order/simple/justforex_usd_bitcoin JustForex USD]&lt;br /&gt;
&lt;br /&gt;
==Sell options==&lt;br /&gt;
&lt;br /&gt;
Unichange.me propose the customers a wide choice of Bitcoin withdrawal methods among which bank transfer USD/EUR, Western Union USD money transfer, Unichange.me debit card, personal credit/debit card USD/EUR, Perfect Money USD/EUR, OkPay USD, FasaPay USD/IDR, Paypal USD, JustForex USD.&lt;br /&gt;
&lt;br /&gt;
[https://unichange.me/order/simple/bitcoin_wire_transfer_usd Bank transfer USD]&lt;br /&gt;
&lt;br /&gt;
[https://unichange.me/order/simple/bitcoin_wire_transfer_eur Bank transfer EUR]&lt;br /&gt;
&lt;br /&gt;
[https://unichange.me/order/simple/bitcoin_western_usd Western Union USD]&lt;br /&gt;
&lt;br /&gt;
[https://unichange.me/order/simple/bitcoin_unichange_card_usd Unichange.me debit card USD]&lt;br /&gt;
&lt;br /&gt;
[https://unichange.me/order/simple/bitcoin_credit_card_usd Debit/debit card USD]&lt;br /&gt;
&lt;br /&gt;
[https://unichange.me/order/simple/bitcoin_credit_card_eur Debit/credit card EUR]&lt;br /&gt;
&lt;br /&gt;
[https://unichange.me/order/simple/bitcoin_perfect_money_usd Perfect Money USD]&lt;br /&gt;
&lt;br /&gt;
[https://unichange.me/order/simple/bitcoin_perfect_money_eur Perfect Money EUR]&lt;br /&gt;
&lt;br /&gt;
[https://unichange.me/order/simple/bitcoin_okpay_usd OkPay USD]&lt;br /&gt;
&lt;br /&gt;
[https://unichange.me/order/simple/bitcoin_fasapay_usd FasaPay USD]&lt;br /&gt;
&lt;br /&gt;
[https://unichange.me/order/simple/bitcoin_fasapay_idr FasaPay IDR]&lt;br /&gt;
&lt;br /&gt;
[https://unichange.me/order/simple/bitcoin_paypal_usd PayPal USD]&lt;br /&gt;
&lt;br /&gt;
[https://unichange.me/order/simple/bitcoin_justforex_usd JustForex USD]&lt;br /&gt;
&lt;br /&gt;
==Bitcoin debit card ==&lt;br /&gt;
&lt;br /&gt;
Unichange has designed special offer for active Bitcoin users - Unichange debit card for fast Bitcoin withdrawal to fiat money.&lt;br /&gt;
&lt;br /&gt;
Basic features of Unichange card:&lt;br /&gt;
*the cost of the card is $14&lt;br /&gt;
*possibility to order Unichange card in USD, EUR or GBP currency&lt;br /&gt;
*card maintenance fee is $1/month&lt;br /&gt;
*high limits (posibility to withdraw up to $60,000/€60,000/£48,000)&lt;br /&gt;
*the card can be used for offline, online shopping and ATM withdrawals&lt;br /&gt;
&lt;br /&gt;
More information about the card check here https://unichange.me/debit_cards&lt;br /&gt;
&lt;br /&gt;
==Fees==&lt;br /&gt;
&lt;br /&gt;
Fees on Unichange.me are constantly changing as service propose large amount of offers and deals, so it is better to check rates for all exchange directions on website directly. You can check all Unichange.me fees here https://unichange.me/fees&lt;br /&gt;
&lt;br /&gt;
==Affiliate program==&lt;br /&gt;
&lt;br /&gt;
Unichange.me service invites everyone to participate in Affiliate program and earn % of referrals&#039; exchange commission.&lt;br /&gt;
&lt;br /&gt;
Clients of Unichange.me service meet all benefits of the Affiliate program:&lt;br /&gt;
&lt;br /&gt;
* Simple and transparent Affiliate Program.&lt;br /&gt;
* Wide choice of promo materials for your website.&lt;br /&gt;
* Free participation, requiring no additional conditions.&lt;br /&gt;
* Attractive fees for affiliates, 3 levels of Affiliate program.&lt;br /&gt;
* Reliable and stable service with supportive team.&lt;br /&gt;
* Wide variety of withdrawal methods.&lt;br /&gt;
&lt;br /&gt;
You can check detailed information about Affiliate Program here https://unichange.me/partner_program&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*[https://unichange.me/ Unichange.me website]&lt;br /&gt;
*[https://unichange.me/registration User registration]&lt;br /&gt;
*[https://unichange.me/debit_cards About Unichange.me debit card]&lt;br /&gt;
*[https://unichange.me/fees Unichange.me fees]&lt;br /&gt;
*[https://unichange.me/partner_program Affiliate Program]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=UpDown.BT&amp;diff=70699</id>
		<title>UpDown.BT</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=UpDown.BT&amp;diff=70699"/>
		<updated>2025-05-17T16:08:09Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://updown.bt UpDown.BT] — New beautiful service which allows you to trade binary options on Gold/Silver/Oil and various currencies with [[Bitcoin]]. Became a gold member of Bitcoin Foundation in April 2014.&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Uquid&amp;diff=70698</id>
		<title>Uquid</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Uquid&amp;diff=70698"/>
		<updated>2025-05-17T16:07:37Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;About Uquid&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Uquid aims to connect the cryptocurrency enthusiast with the merchants worldwide through the decentralized [[Bitcoin]] blockchain technology. The all-in-one solution offered by Uquid enables bitcoin and altcoin payments with just one click. With the Uquid bitcoin debit card, users can spend their coins worldwide, in millions of online or offline stores.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Uquid on Social Media and media&#039;&#039;&#039;&lt;br /&gt;
* Email: hello@uquid.com&lt;br /&gt;
* Facebook: https://www.facebook.com/uquidcard/&lt;br /&gt;
* Twitter: https://twitter.com/uquidcard&lt;br /&gt;
* Google+: https://plus.google.com/100328624017217144735&lt;br /&gt;
* Website: https://uquid.com&lt;br /&gt;
* https://cointelegraph.com/news/uquid-allows-40-different-altcoins-to-use-visas-global-network&lt;br /&gt;
* https://www.okcoin.cn/t-1016455.html&lt;br /&gt;
* https://www.cryptocoinsnews.com/load-visa-card-40-altcoins/&lt;br /&gt;
* https://bitconnect.co/bitcoin-news/348/uquid-load-a-visa-card-with-over-40-altcoins&lt;br /&gt;
* http://bitcoinist.com/uquid-visa-card-altcoins/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Services Provided&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Uquid provides access to cryptocurrency payments in bitcoin. The wallet can be used in three different fiat currencies, such as USD, EUR and GBP. The transfers from the wallet to the debit card happens instantly at real time market rates, so users can spend the coins right away.&lt;br /&gt;
&lt;br /&gt;
They target the unbanked population and the travelers for their services who wish to transfer many in an easy, cheap and hassle free way. The cards can be used at retailers to top up mobiles, pay utility bills, pharmacy or food, purchase transportation ticket or anything else, clients would buy with an ordinary debit card. Clients can also receive money to the Uquid cards from freelancing activities, gambling sites and even from PayPal. The ATM withdrawals are available at more than 34 million ATM cash machines worldwide.&lt;br /&gt;
&lt;br /&gt;
Both physical and virtual cards are available at UQUID. The PIN codes are available in the Uquid platform after activating the card. The physical cards are delivered to over 178 countries worldwide. Users in many African countries and in the Middle East are not able to use Uquid’s services. Residents of India and the United States are also on the excluded countries list.&lt;br /&gt;
&lt;br /&gt;
The shipping takes 1-2 weeks depending on the workload of the issuing bank. The standard shipping is free of charge. Expedited shipping costs 35 USD and means users can get hold of the bitcoin cards within 5 business days. UQUID limits the number of cards belonging to one email address, if clients want to order additional cards, they have to sign up for the services with a new email address.&lt;br /&gt;
&lt;br /&gt;
The Uquid bitcoin debit card can be loaded through several methods. Bank wire transfers are available for customers who can verify their identities. For anonymous usage, clients can opt for top ups with Paysafecards, bitcoins, any of the 40 other altcoins. They accept alternative payment service providers as well, like Alipay, CashU and 17 other payment provider which operates in different countries.&lt;br /&gt;
&lt;br /&gt;
Uquid have two different levels of service depending on the Know Your Customer (KYC) identification processes. The Silver package is for those users who do not wish to disclose their identity. The VISA issued debit card requires no identification or credit check before ordering. The cards can be topped up with 2500 USD without identity verification, the ATM withdrawal is limited to 200 USD per transaction, up to a maximum 1000 USD.&lt;br /&gt;
&lt;br /&gt;
With identity verification which means providing ID or passport and proof of residence, client are eligible for the gold package. Verification takes 3-4 working days after providing the documents. The identity verification lets the clients use the Uquid bitcoin debit card for unlimited amount of money. Only the daily ATM withdrawals are set to 2000 USD with two transactions and the daily top ups is maximized in 20000 USD. Otherwise the verified cards are truly available for unlimited usage.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fees and Pricing Schedule&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* The creation of the virtual Uquid bitcoin debit card costs 1 USD, the plastic card is charged at 16.99 USD. The monthly maintenance fee is also 1 USD, however this fee is only payable if the card has any balance. Obtaining the PIN code is free for the first time, then changing it costs 1 USD.&lt;br /&gt;
&lt;br /&gt;
* Domestic ATM withdrawals are charged at 2.50 USD per transaction, the international cash withdrawals cost 3.00 USD. Uquid charges 3% currency exchange fee if the base currency of the card is different compare to the purchase currency.&lt;br /&gt;
&lt;br /&gt;
* The loading fees vary depending on the top up method chosen. The wallets can be loaded with bitcoins and altcoins with free of change. The wire transfers costs 1.5% per transaction, Alipay top ups costs 5%, CashU is 2%.&lt;br /&gt;
&lt;br /&gt;
* If clients wish to withdraw the deposits from the Uquid accounts, an additional 3% transactions fee is charged each time on the bank transfer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Uquid User Experience&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Uquid website has a nicely designed platform, however their English ruins the experience. Missing words, incorrect conjugation and sentences that are structured inappropriately makes the content sometimes even difficult to understand.&lt;br /&gt;
&lt;br /&gt;
Uquid platformThe platform is available in eight different languages. Beside English, clients can reach the site in German, Italian, French, Turkish, Chinese, Russian, Vietnamese and in Arabic. The services are also reachable for smart phone users both in the App Store for iPhone users and in the Google Play for Android users. Two factor authentication is available for the website logins.&lt;br /&gt;
&lt;br /&gt;
Their support team is reachable by email and through a contact form that creates a ticket number which enable easier tracking of issues. They promise to respond to user queries within 24 hours window.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overall Conclusion&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Uquid offers prepaid debit card option in three fiat currencies (USD, EUR and GBP) and connects 40 different cryptocurrencies to it. The card fees are on the average market level and delivered to most countries worldwide. After verification, clients may use the Uquid bitcoin debit cards without any limits. Although Uquid has a very good service structure, it is disappointing that the website has poor English language, which may distract many prospective clients.&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Vera%26John&amp;diff=70697</id>
		<title>Vera&amp;John</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Vera%26John&amp;diff=70697"/>
		<updated>2025-05-17T16:06:48Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vera&amp;amp;John is the first licensend and regulated online casino to support deposits and withdrawals in [[Bitcoin]]. NetEnt, Play&#039;n GO, Betsoft, IGT, Nextgen Gaming, Bally Technologies. Operated by Dumarca Gaming Ltd.  Northfields, Apartment 2, Suite 6, Independence Avenue, Mosta, Malta. Licence issued and regulated by Malta’s Lotteries and Gaming Authority: LGA/CLl/552/2009&lt;br /&gt;
&lt;br /&gt;
==Games==&lt;br /&gt;
Baccarat&lt;br /&gt;
Blackjack&lt;br /&gt;
Roulette&lt;br /&gt;
Video Poker&lt;br /&gt;
Card Games&lt;br /&gt;
Scratch Cards&lt;br /&gt;
Slots &amp;amp; Video Slots&lt;br /&gt;
Keno&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
[http://www.verajohn.com/ Vera&amp;amp;John]&lt;br /&gt;
&lt;br /&gt;
[http://www.verajohn.com/about/bitcoin How to use Bitcoin at Vera&amp;amp;John]&lt;br /&gt;
&lt;br /&gt;
==Reviews==&lt;br /&gt;
&lt;br /&gt;
*[http://www.bitcoingg.com/bitcoin-gambling-sites/vera-and-john/ Vera&amp;amp;John Bitcoin Review]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Waiting_For_Bitcoin&amp;diff=70696</id>
		<title>Waiting For Bitcoin</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Waiting_For_Bitcoin&amp;diff=70696"/>
		<updated>2025-05-17T16:06:16Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Waiting For Bitcoin is a site that was originally designed to allow restaurant waiters and bartenders to print their own payment cards and easily accept [[Bitcoin]].  [[Image:4btco_Card.png|frame|Example Card from Waiting For Bitcoin]] [[Image:WFB-Logo.png|321px|thumb|Waiting For Bitcoin logo]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, the site facilitates: &amp;lt;br /&amp;gt;&lt;br /&gt;
* Buying at [http://buybt.co buyBT.Co] &amp;lt;br /&amp;gt;&lt;br /&gt;
* Selling at [http://sellbt.co sellBT.Co] &amp;lt;br /&amp;gt;&lt;br /&gt;
* Paying Bills at [http://billbybit.com BillByBit.com]&lt;br /&gt;
&lt;br /&gt;
The site features various delivery options to suit your specific needs.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [http://waitingforbitcoin.com Waiting For Bitcoin] Website&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Defunct exchanges]]&lt;br /&gt;
[[Category:Local]]&lt;br /&gt;
[[Category:Directories]]&lt;br /&gt;
[[Category:eWallets]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Wollit&amp;diff=70695</id>
		<title>Wollit</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Wollit&amp;diff=70695"/>
		<updated>2025-05-17T16:04:37Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;A simple and secure web-based client-side encrypted Bitcoin wallet.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
wollit aims to facilitate mainstream adoption of [[Bitcoin]] by providing a simple, secure and clean way of sending, receiving and managing Bitcoin [[transaction]]s.&lt;br /&gt;
&lt;br /&gt;
wollit also provides merchant functionality for utilising Bitcoin as a payment mechanism and offers developers full [[Block chain|blockchain]] browser functionality&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fees ===&lt;br /&gt;
&lt;br /&gt;
There are no fees for using wollit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
The service launched in beta in May 2013&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Wallet Security ===&lt;br /&gt;
&lt;br /&gt;
* The wallet available from this service is considered a hybrid EWallet. &lt;br /&gt;
* Bitcoins are not stored with wollit, but instead held in your browser. &lt;br /&gt;
* There is an encrypted copy of your wallet stored on wollit&#039;s servers,&lt;br /&gt;
* wollit cannot spend/lose of even access your Bitcoins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* aes encryption&lt;br /&gt;
* iso10126 padding&lt;br /&gt;
* 500 rounds of PBKDF2 on users password as key&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== External Link ===&lt;br /&gt;
&lt;br /&gt;
[http://wollit.com wollit]&lt;br /&gt;
&lt;br /&gt;
[http://blog.wollit.com wollit blog]&lt;br /&gt;
&lt;br /&gt;
[[Category:EWallets]]&lt;br /&gt;
[[Category:Wallets]]&lt;br /&gt;
[[Category:Exchanges]]&lt;br /&gt;
[[Category:Shopping Cart Interfaces]]&lt;br /&gt;
[[Category:Services]]&lt;br /&gt;
[[Category:Frontends]]&lt;br /&gt;
[[Category:Clients]]&lt;br /&gt;
[[Category:Mobile]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=XZZX&amp;diff=70694</id>
		<title>XZZX</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=XZZX&amp;diff=70694"/>
		<updated>2025-05-17T16:02:05Z</updated>

		<summary type="html">&lt;p&gt;Calliptamus: /* Supported currencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About the company ==&lt;br /&gt;
&#039;&#039;&#039;[https://xzzx.biz xzzx.biz]&#039;&#039;&#039; was founded in 2008. The mission of the company is to provide convenient automatic e-currency exchange services&lt;br /&gt;
&lt;br /&gt;
==Supported currencies==&lt;br /&gt;
[[Bitcoin]], Litecoin, Webmoney, Perfect Money, Wire USD&lt;br /&gt;
&lt;br /&gt;
[[Category:Defunct exchanges]]&lt;br /&gt;
[[Category:Financial]]&lt;/div&gt;</summary>
		<author><name>Calliptamus</name></author>
	</entry>
</feed>