Sunday, October 26, 2014

Why Bitcoin Needs an ISO-Certified Currency Code

By Jon Matonis
Tuesday, October 21, 2014

A formal ISO currency code will spur global mainstream adoption of bitcoin more than any other single action.

When a new currency code becomes adopted by the independent and nonpolitical International Organization for Standardization (ISO), it immediately enters the database tables upon which Visa, MasterCard, PayPal, SWIFT and other clearing networks rely.

ISO 4217 is a standard published by the ISO, which delineates currency designators, country codes (alpha and numeric) and references to minor units in three separate tables.

Now, a distributed currency having an identifiable code in a centralized database may not seem like much of an accomplishment.

However, when we consider what this means for integration into existing networks, trading systems and software accounting systems, it becomes much more significant. All the more so when we consider that a code prefix of 'X' denotes a non-national affiliation or a monetary metal such as gold or silver.

Instantly, bitcoin as XBT will be available as a selectable clearing and settlement unit for any business that chooses to offer and implement bitcoin. Of course, designing and managing the necessary settlement and hedging mechanisms will be a different matter altogether. Certain clearing networks may effectively become bitcoin exchanges.

With the three-character code having been in informal usage since early 2013, a formal application for XBT is nearing completion by the Financial Standards Working Group within the Bitcoin Foundation. This effort has its origins in a petition submitted by Emelyne Weiss that circulated on, the world's platform for change. The petition closed with 836 supporters.

Since the decentralized bitcoin has a peer-to-peer block chain rather than an 'official' currency manager, a central bank or an existing institution such as SWIFT may also be necessary to support the ISO application for XBT. As leaders of financial innovation through their Innotribe initiative, early indications from SWIFT senior management are that they would be supportive of such an application, if required.

Recently, the topic of XBT and the need to standardize various subunits has been much debated on Reddit and other social media outlets, unfortunately causing more confusion than clarification. Let's examine some of the top-level issues.

Why was XBT selected and what happens to BTC?

The code XBT was selected because the prefix 'X' denotes a non-national affiliation or a monetary metal such as gold or silver. Technically, BTC would be unavailable due to the fact 'BT' already represents the country of Bhutan.

The first two letters of the code are the two letters of the country code (as with national top-level domains on the Internet) and the third is the initial of the currency itself. In the case of the dollar (USD), US represents the country and D represents the initial of the currency.

Most likely, BTC would still remain in colloquial usage because it is already widely recognized by the community. Just as slang terms for money exist around the world, BTC shorthand would be used similar to how 'bucks' or 'quid' are used for other currencies. In this scenario, I expect BTC to continue to represent one full bitcoin unit.

Why does XBT have to represent a full unit of bitcoin?

One XBT unit as listed and recorded within ISO 4217 would have eight subunits or decimal places to the right of the decimal point. The rationale for this is that a neutral global default for bitcoin around the world cannot deviate from the unit's representation on the block chain (as expressed in the reference implementation) and the bitcoin integer in the core protocol is not changing.

One bitcoin on the block chain must equal one bitcoin in the formal standards world or else processing errors would be potentially catastrophic.

Even though eight decimals was selected as the starting point for the bitcoin integer, that number may need to be increased over time and increasing the amount of decimal places for bitcoin would hardly be a contested issue by the miners when the time comes.

The code representation within ISO 4217 cannot be changed up and down due to the varying number of decimal places in the core protocol. It must remain static.

Bitcoin is correctly placed, alongside gold, as a digital cryptographic commodity. So, just as gold (XAU) may trade in some areas as kilos or kilograms, the global default standard for pricing and measuring quantities of gold bullion remains the troy ounce.

One troy ounce is currently defined as 31.1034768 grams and is equivalent to approximately 1.09714 avoirdupois ounces. XAU denotes one troy ounce of gold and 'XAU/USD' means the price of 1 troy ounce of gold in US dollars.

How are the subunits related to XBT and the ISO standard?

Despite the fact that several names for bitcoin's minor units have been proposed, only three of the minor units, or subunits, have achieved a consensus within the bitcoin economy.

The third space after the decimal point (10−3) is commonly referred to as 'millibit' or mBTC. The sixth space after the decimal point (10−6) is commonly referred to as 'bit' or μBTC. The eighth space after the decimal point (10−8) is commonly referred to as a 'satoshi', the smallest available amount of bitcoin today.

These existing minor units of bitcoin will be submitted in the ISO application for XBT and it is not required for all of the individual minor units to be submitted.

To better facilitate consumer applications, some bitcoin operators may elect to provide a choice for display preferences. Several applications and web sites, such as BitcoinAverage, already permit toggling between bitcoin and millibit for display purposes.

Recently, some exchange operators have also expressed an interest and willingness to display prices in bits, so that only two decimal places exist to the right of the integer. For instance, KnCMiner embraced the bits display option for its wallet app. These moves could be especially useful for accounting packages that typically accommodate only two decimal points.
Strong opinions exist on all sides for going to a bits display, a millibits display, or remaining with a full bitcoin display.

As a consensus emerges, it is also perceived as useful to utilize one expression for retail consumers and to maintain a full bitcoin expression for wholesale level or institutional trading. This structure is entirely achievable because dual display options can be easily adopted by software providers.

Thursday, October 2, 2014

12 Ways to Measure the Bitcoin Network's Health

By Jon Matonis
Sunday, September 27, 2014

The ultra-resilient bitcoin network is the world's largest distributing computing project in terms of raw computational power, having long ago surpassed 1 exaFLOPS (1,000 petaFLOPS) – over eight times the combined speed of the top 500 supercomputers.

Although since increasing to an amazing 3.2 zettaFLOPS (3,200 exaFLOPS), the project was quietly removed from Wikipedia's list of distributed computing projects. This is probably due to the fact that the exaFLOPS estimate breaks down with bitcoin's specialized ASICs, since they are not capable of floating-point operations.

Instead, the estimate may be used for estimating how well other supercomputers and distributed networking projects would be able to mine bitcoin, since supercomputers have the capability to perform the integer operations used in hashing.

Therefore, today's fastest supercomputer, China's Tianhe-2 with a performance of 33.86 Pflop/s, would measure at about 0.001% of the bitcoin network.

Monitoring network health

As bitcoin matures and starts to compete with legacy retail payments networks like Visa and MasterCard, and wholesale networks like Swift, the health of the decentralized network becomes vital to its performance capabilities.

Community site does an excellent job of maintaining the historical archive of network status alerts and vulnerabilities.

The assembled report below lists the critical statistics for monitoring the ongoing health of the distributed bitcoin network, covering the measurements important for reachability, scalability, security and transaction processing speed.

1. The Bitnodes Project

Bitnodes estimates the size of the bitcoin network by finding all the reachable nodes in the network. The current methodology involves sending getaddr message recursively to find all the reachable nodes in the network starting from a set of seed nodes. It performs this polling every 24 hours and displays the results on a world heat map of countries, including rankings and version of bitcoin reference client.

Source: Bitnodes
The Bitnodes Project launched in April 2013 with the Bitcoin Foundation’s sponsorship as a community resource. The project's latest report can be seen here.

2. Data Propagation

Data propagation
Source: BitcoinStats
The information exchange in the bitcoin network is all but instantaneous. Exactly how fast is information being propagated in the network though? Maintained by BitcoinStats, the propagation evolution chart shows the 50th percentile of the inv-messages received by peers (ie: the plot shows the time since a transaction or block enters the network until a majority of nodes has received and processed it).

3. DNS Bootstrap Servers

DNS seeds are used by almost all bitcoin clients to identify a set of nodes to connect to when starting. The seeds are run by volunteers using a multitude of mechanisms to ensure the returned seeds represent a good sample of nodes currently online.

DNS servers
Source: BitcoinStats
Except for, the seeds aim to return nodes that are currently online and reachable. Also provided by BitcoinStats, the chart shows results from regular bootstrap attempts using the seeds with the plot representing the average hourly connection success rate for each of the seeds. The closer to 100%, the better the seed is.

An auxiliary chart with response time of DNS seeds to queries is also provided, which indicates the response times in milliseconds (ms) elapsed between sending the query and receiving a response.

4. Network Hashing Rate

Provided by developer Pieter Wuille, this series of graphs display hashing difficulty and the estimated number of terahashes per second (computation speed) that the network is performing for various time windows (1 terahash equals 1,000 gigahashes).
Hashing rate
Calculated by dividing maximum target by current target where target is a 256-bit number, difficulty measures how difficult it is to find a new block compared to the easiest it can ever be. Difficulty adjusts every 2,016 blocks (or two weeks) and to find a block, the SHA-256 hash of a block’s header must be lower than or equal to the current target for the block to be accepted by the network.

5. Hash Rate Distribution

This pie chart from Organ Ofcorti is an estimation of hash rate distribution amongst the largest mining pools at a weekly interval. It is important to monitor because the integrity of the network depends on a single actor not exceeding 50% of the overall hashing power.

Network blocks
Source: Organ OfCorti
A table of solved block statistics lists all statistics that can be derived from the number of blocks a hash rate contributor has solved for the past week. Block attributions are either from primary sources such as those claimed by a particular pool website, or secondary sources such as coinbase signatures, or known generation addresses.

When dependent on secondary sources only, data may be inaccurate and miss some blocks if a particular block-solver has gone to some trouble to hide solved blocks and this will result in an underestimate of the block-solver hash rate.

An alternate chart across 24-hour, 48-hour and four-day time horizons is provided by Blockchain.

6. Selfish Mining Indicator

Produced by Coinometrics, this metric attempts to measure the likelihood and prevalence of bitcoin miners engaged in a subset behavior of the 'Selfish Mining' strategy, as described by Ittay Eyal and Emin Gün Sirer in their paper, Majority is not Enough: Bitcoin Mining is Vulnerable.

selfish mining indicator
Source: Coinometrics
Since the bitcoin protocol relies on miners following the rules laid out by the software, as soon as miners have found a block they need to announce it to the network.

Selfish mining defies this rule, because certain miners, once they have found a block, can withhold it from the network and start working on their next block. Once they have a number in their hidden chain, they can release them to invalidate the blocks that the network thought were part of the main chain.

The lower the probability that at least k (actual distribution) blocks will be found in the time represented by the first bucket, the more likely that miners are engaging in quick succession behavior under the Selfish Mining strategy.

Coinometrics explains:
"One way to estimate the likelihood of such a strategy being implemented is to measure the distribution of the time between blocks against the expected distribution. The rate of creation of bitcoin blocks is determined by how quickly the first miner solves for a hash meeting the difficulty requirements of the protocol. Every attempt to meet this difficulty has a set probability of being correct. By definition, the probability is independent between hashes. As a result the rate at which blocks are generated should follow an exponential distribution."

7. Orphaned Blocks

orphaned blocks
Source: Blockchain
Orphaned blocks are valid blocks which are not part of the main bitcoin block chain. They can occur naturally when two miners produce blocks at similar times or they can be caused by an attacker with enough hashing power attempting to reverse transactions.

Initially accepted by the majority of the network, orphaned blocks are those that are rejected after proof of a longer block chain is received that doesn't include that particular block. In other words, a user could see a transaction as having one confirmation and then revert to zero confirmations if a longer blockchain was received that didn't include the transaction.

8. Double Spends Monitor

Blockchain maintains a real-time monitor for double spends detected in the last 500,000 transactions utilizing a 10-minute cache. This could be used to alert users to potentially malicious transactions on the network.

9. Unconfirmed Transactions

unconfirmed transactions
Source: Blockchain
Blockchain also maintains this live updating list of new bitcoin transactions waiting to be included in a block. The monitor displays total number of unconfirmed transactions, including total fees and total size in kilobytes.

10. Average Transaction Confirmation Time

Confirmation time
Source: Blockchain
This measures the average (mean) amount of time in minutes that it takes for a transaction to be accepted into a block. Reasonable estimates differ on the amount of time and confirmations for a transaction to be considered cleared and ‘good’, but that appropriate risk level would be associated with the transaction’s value.

11. Block Chain Total Size

Block chain size
Source: Blockchain
The block chain total size is important because of the storage space considerations as it grows as well as the time it takes for initial synchronization after installing the reference client for the first time. This measurement shows total size of all block headers and transactions not including database indexes.

12. Average Block Size

Block size
Source: Blockchain
Measured here in fractions of a megabyte, the block size will become a heated debate once the bitcoin network starts approaching its current throughput limit of approximately seven transactions per second.

Ultimately important for scalability, the stated block size limit will have to be increased, linked to another variable, or remain the same with more confirmations pushed off chain, each path having corresponding implications for decentralization of the system.

Please let us know in the comments section below if we have omitted any measurement critical to network operations or if any references are out-dated.