NEW YORK, NY / ACCESSWIRE / June 10, 2015 / The team at BitShares has been extremely quiet for the last several months, and apparently quite busy. The BitShares development team is now claiming that they can process 100,000 transactions per second. To put this another way, that is as many transactions per second as Visa and MasterCard process combined.
Great claims require great evidence and the claim that BitShares is capable of 100,000 transactions per second has probably raised a few eyebrows.
Measuring Performance - Throughput and Latency
When designing a system to scale it is critical to understand where the real bottlenecks are and to design around maximizing the performance of those bottlenecks. The team at BitShares have identified Single-Threaded processing power as the bottleneck.
Blockchains are inherently sequential because every transaction has the potential to change the global state in a way that might invalidate the next transaction. This property is especially true of market transactions that interact with the global order book.
When measuring performance they made the assumption that the network is capable of streaming all of the transaction data and that disks are capable of recording this stream. They also made the assumption that signature verification has been done in parallel using as many computers as necessary to minimize the latency.
A single core of a 2.6 Ghz i7 is able to validate 10,000 signatures per second. Today's high-end servers with 36 cores (72 with hyper-threading) could easily validate 100,000 transactions per second. All of these steps have been designed to be embarrassingly parallel and to be independent of Blockchain state.
The average size of a transaction is just 100 bytes which equates to about 10 Megabytes per second to stream 100,000 transactions per second. This is well within the capacity of most data centers and therefore not considered part of the bottleneck.
What remains is how quickly 100,000 transactions can be applied to the Blockchain state consisting of millions of accounts while validating all state-dependent pre-conditions. This is the work that must be performed by witnesses in a timely manner so they can keep up with blocks in real time. There is no trivial means of accelerating this task and introducing multiple threads will result in synchronization points and other overhead that experience has taught us ultimately slows down throughput.
While people think in terms of transactions, BitShares thinks in terms of operations. A transfer is a single operation that transfers funds from one account to another. Other operations include: create account, create limit order, issue asset, create asset, etc.
A transaction consists of one or more operations that must execute together or not all. Every operation is able to stand alone in a transaction. Therefore, for the purposes of our benchmarks we assume all transactions contain exactly one operation and that measuring operations per second is equivalent to measuring transactions per second.
The BitShares dev team setup a test Blockchain where they created 200,000 accounts and then made 2 transfers and 1 asset issuance to each account. This is involved a total of 1 million operations. After creating the Blockchain they timed how long it took to "reindex" or "replay" without signature verification. On a two year old 3.4 Ghz Intel i5 CPU this could be performed at over 180,000 operations per second. On newer hardware single threaded performance is 25% faster.
Based upon these numbers, the BitShares team has proudly concluded that claiming 100,000 transactions per second is well within the capability of the software.
While they are convinced that the architecture is capable of 100,000 transactions per second, real world usage is unlikely to require anywhere near that performance for quite some time. Even the NASDAQ only processes 35,000 messages (aka operations) per second and has only been tested to 60,000 TPS with eventual plans to upgrade to 100,000.
BitShares also recently announced their upgrade to 2.0 technology by utilizing the Graphene Toolkit available for licensing by Cryptonomex, a new company created by the core development team, founders and marketing consultants at BitShares.
You can find out more about the performance and measurements on this post: http://bitshares.github.io/blog/2015/06/08/measuring-performance/.