How to Process 100M Transfers / Second on a Single Blockchain by dantheman

View this thread on steempeak.com
· @dantheman ·
How to Process 100M Transfers / Second on a Single Blockchain
<center> https://cdn3.computerworlduk.com/cmsdata/features/3640764/blockchain_thumb800.jpg </center>

In yesterday’s article I suggested that blockchains need to be able to process transactions at a rate of 10 million per second (offline) in order to sustain 1000 transactions per second realtime while only adding 1 hour per year to the replay time. Today I would like to present a solution to achieving this level of performance for the specific case of transfers.

Lets assume there are 3000 transfers in a block (blocks are 3 seconds apart).  To process these 3000 transfers at a rate of 10M per second means we have 300us  (.3 milliseconds) to apply the transfers. Using the current ChainBase architecture performing these transfers would take 0.15 seconds (assuming 5us per transfer).  We need to accelerate this operation by a factor of 500 to achieve our goals.

## Single Thread is not Viable 

The act of transferring from one account to another involves subtracting from one balance and adding to another balance. In computational terms it doesn’t get much simpler than this and there is very little room to improve single threaded performance.  

## Order of Operations Matters 

Lets assume an initial condition where Alice has 100 SBD and Bob has 0 SBD.   A single block can support Alice transferring 100 SBD to Bob and Bob transferring 100 SBD to Eve so long as Alice’s transfer is applied first.

As things are currently defined it is not possible to perform two transfers in parallel because Bob’s transfer is not valid until after Alice’s transfer completes. Furthermore, if they were operating in parallel there would be a race condition on reading and writing the balances.  

## Redefining the Semantics of a Transfer

What if we redefined the requirements for a valid block to require that each account may receive at most one deposit or one withdraw. Under these more restrictive definitions we can now apply all 3000 transfers in parallel.   Since each transfer only takes 5us and we have 15us, we can allow each account up to 3 deposits or withdraws per block.  With 3 second blocks this means that each account has a maximum transaction rate of 1 TPS but the blockchain as a whole can process 200,000 * THREAD COUNT transactions per second.  It is entirely possible to build a workstation that [supports 44 cores](https://www.mediaworkstations.net/product/i-x2/) which means that this blockchain should be able to process 8.8M transfers per second.

## Achieving 100M transfers per second
With some small tweaks to memory layout and operation ordering it should be easy to make up the difference required to get to 10M transfers per second.  With a bit more optimization designed to run the blockchain on a GPU this could scale to 100M transfers per second.


## Real World Throughput 

Having a CPU that can process 10M transfers per second, means we have a blockchain that can sustain 1000 transactions per second with a growth rate of 100KB/sec or 3 TB per year with a rsync rate of 1 hour per year and require reading the blockchain from disk at 1GB per second.  


It should be obvious that downloading a 30TB blockchain over a gigabit connection would take days after 10 years of operation at 1000 transactions per second. Keeping track of all blockchain history for all time will be a very expensive undertaking at 1000 transactions per second.  


## Eliminating the Need to Replay 

A large part of our scalability problem is requiring all nodes to replay all transactions to reliably derive the current state.  This replay time could be entirely eliminated if a blockchain had a fixed and well defined “current state”.   If the only thing the blockchain was concerned with was balance transfers, then every smartphone owner in the world could have an account with a database size of less than 256GB.  

Steem has intentionally kept the structure of the blockchain state “undefined” to give us the greatest flexibility to optimize going forward, especially as we keep adding features. A simple currency blockchain has no need to add an unbounded number of features.  This means we can define an optimal data-structure for its state. The hash of this data structure could be included in the blockchain from time to time and new users could simply download this state and start applying new blocks.

## Key to Growth 

A blockchain that desires to scale must achieve the following:

1. perform a small number of well defined tasks
2. operate on a protocol defined state 
3. minimal change in function over time 
4. ensure that all transactions in a block are independent
5. minimize the number of sequential steps per block

The best way to achieve these properties while maintaining flexibility is to have a robust cross-chain communication protocol and keep all new / changing features on separate chains. You could have one chain for STEEM, one for SBD, one for STEALTH STEEM, and one for STEALTH SBD.  Each of these parallel chains would have the potential to process 1000’s of transactions per second and have a fixed, well-defined state.  This alone gives the transfer throughput a 4x scalability boost.

## Leveraging Ample Real-Time Capacity

There is a clear gap between the 1000 transactions per second being processed in real-time and the 10M transactions per second that get processed during replay. During real time evaluation of the blockchain the CPU is idle 99.9% of the time.  We can use this idle time to perform extra computations that are not necessary during replay.

Among these calculations are the scheduling of operations in a block. The protocol can require that all valid blocks keep operations sorted by account. It can even organize operations by memory access patterns and calculate the best execution strategy.  These calculations take extra time to perform while building the blockchain, but can be completely skipped during replay. When replaying the blockchain we are only concerned with deriving the proper state, not verifying that all the steps are authorized and well formed (that is guaranteed by the hash linking of blocks).

This can be viewed like a compiler interpreting a program to generate assembly.  Once the assembly is generated the CPU can process it very quickly.  Another analogy would be a CPU that re-orders instructions to maximize performance. Block producers are responsible for building blocks that properly order transactions for maximum performance. Any block that is produced with conflicting memory accesses would be rejected.

## Conclusion 

A poorly defined problem can demand an entirely sequential solution; however, if we add a few small constraints on the problem it can easily become trivially parallel.  Block producers can do a little bit of extra work up front to ensure that all blocks can be replayed using parallel operation evaluation.  By simplifying the problem and defining the output state format as part of the protocol we can also eliminate the need to replay all together.
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 421 others
properties (23)
post_id1,466,552
authordantheman
permlinkhow-to-process-100m-transfers-second-on-a-single-blockchain
categoryblockchain
json_metadata"{"app": "steemit/0.1", "format": "markdown", "links": ["https://www.mediaworkstations.net/product/i-x2/"], "image": ["https://cdn3.computerworlduk.com/cmsdata/features/3640764/blockchain_thumb800.jpg"], "tags": ["blockchain", "steem"]}"
created2016-12-01 23:16:00
last_update2016-12-01 23:16:00
depth0
children59
net_rshares138,439,947,418,388
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length6,990
author_reputation240,497,801,758,545
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout0.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (485)
@goldmatters ·
Resteemed and tweeted
👍  
properties (23)
post_id1,466,561
authorgoldmatters
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161201t231649820z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-01 23:16:48
last_update2016-12-01 23:16:48
depth1
children0
net_rshares104,437,033,161
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length21
author_reputation339,712,174,383,186
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@freecrypto ·
upvoted, followed.
properties (22)
post_id1,466,574
authorfreecrypto
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161201t231824878z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-01 23:18:39
last_update2016-12-01 23:18:39
depth1
children0
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length18
author_reputation80,249,889,752,864
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@optimistic ·
Great post
properties (22)
post_id1,466,578
authoroptimistic
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161201t231949578z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-01 23:19:57
last_update2016-12-01 23:19:57
depth1
children0
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length10
author_reputation3,432,065,404,475
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@gutzofter ·
$0.09
Very nice.
> The best way to achieve these properties while maintaining flexibility is to have a robust cross-chain communication protocol and keep all new / changing features on separate chains.

Would also give you the ability to create contextual chains. To transfer the perspective of the chain away from transactions and towards the context in which we would like to see the data. You could also build a chain from links of chains. IPFS is the closest I've seen come to this.
👍  
properties (23)
post_id1,466,668
authorgutzofter
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161201t234206059z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-01 23:42:06
last_update2016-12-01 23:42:06
depth1
children0
net_rshares1,806,784,078,824
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.064 SBD
curator_payout_value0.021 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length480
author_reputation7,624,690,546,443
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@krnel ·
It sounds like a great step forward for Steem and the blockchain technology overall. I don't understand it all, but adding a conditional requirement made more transfers possible at one time by including the same accounts in one block, that I do get. How much is the sorting by account or memory access pattern going to improve the speed?
properties (22)
post_id1,466,681
authorkrnel
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161201t234404088z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-01 23:44:03
last_update2016-12-01 23:44:03
depth1
children1
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length337
author_reputation954,992,586,021,436
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@dantheman ·
Any step you don't perform while producing a block, you end up performing every block every time you reindex.  Even if it only saved .000001 second it would add up to meaningful time after millions of blocks.  Sorting 3000 transactions can take a lot more than .000001 seconds.
properties (22)
post_id1,466,700
authordantheman
permlinkre-krnel-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161201t234711457z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-01 23:47:12
last_update2016-12-01 23:47:12
depth2
children0
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length277
author_reputation240,497,801,758,545
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@teamsteem ·
Now you have the reason why @dantheman wasn't at the SteemFest! He's working to fix this world and I love it!
👍  
properties (23)
post_id1,466,684
authorteamsteem
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161201t234425042z
categoryblockchain
json_metadata"{"users": ["dantheman"], "tags": ["blockchain"]}"
created2016-12-01 23:44:27
last_update2016-12-01 23:44:27
depth1
children0
net_rshares12,976,812,814
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length109
author_reputation284,009,804,791,421
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@acidyo ·
Wow, this is really interesting.

As a small-time mining enthusiast I always wondered if the extra computing power that is being used to mine a cryptocurrency could be used to do something different instead than just raise the difficulty to keep the block-timer proportional.

Do you think it would be possible to assign an algorythm that let's miners "idle" during low transaction output but if "something big happens" or huge activity causes transactions to increase then it slowly starts working harder with the GPU/CPU software to keep that up? Or is that maybe a completely different field and the GPU usage is required for the hashes anyway.. I am not so technical I just like to imagine solutions to problems. :P
properties (22)
post_id1,466,757
authoracidyo
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t000329955z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 00:03:30
last_update2016-12-02 00:03:30
depth1
children0
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length719
author_reputation1,572,775,251,470,663
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@tibonova ·
>Since each transfer only takes 5us and we have 15us, we can allow each account up to 3 deposits or withdraws per block. With 3 second blocks this means that each account has a maximum transaction rate of 1 TPS but the blockchain as a whole can process 200,000 * THREAD COUNT transactions per second.

It's a very good deal. Also there is Moore's law for further scaling. ;)
properties (22)
post_id1,466,780
authortibonova
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t000651218z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 00:06:51
last_update2016-12-02 00:06:51
depth1
children0
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length374
author_reputation12,915,496,650,148
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@klye · (edited)
<3 Loving this.

Is it possible for us to build a database free client that runs off of the heads of the block or something? 
Think similar to Electrum for Bitcoin.
properties (22)
post_id1,466,925
authorklye
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t003420055z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 00:34:12
last_update2016-12-02 01:00:21
depth1
children0
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length164
author_reputation257,698,037,451,488
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@benjojo ·
If you say so dan ;)) I read every word with great interest and much excitement. I understood the words and some of the concepts but that's it. what I understand for sure is that you and your team are putting mainstream suitability of blockchains and potential for their acceptance, the best chance in the whole of crypto.
👍  
properties (23)
post_id1,466,941
authorbenjojo
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t003932432z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 00:39:33
last_update2016-12-02 00:39:33
depth1
children0
net_rshares412,643,725,078
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length322
author_reputation120,843,201,416,812
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@biophil ·
> if we add a few small constraints on the problem it can easily become trivially parallel.

That's incredibly beautiful, and (to me) a bit counterintuitive. Maybe it feels natural to someone who's used to thinking about the nuts and bolts of computation, but it's not what I immediately would have expected. Good post!
properties (22)
post_id1,466,994
authorbiophil
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t005054696z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 00:50:54
last_update2016-12-02 00:50:54
depth1
children0
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length319
author_reputation45,243,433,466,167
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@timcliff ·
$0.10
> The best way to achieve these properties while maintaining flexibility is to have a robust cross-chain communication protocol and keep all new / changing features on separate chains. You could have one chain for STEEM, one for SBD, one for STEALTH STEEM, and one for STEALTH SBD.

If we were to go this route, would each chain need to have its own coin associated with it, along with miners, witnesses, etc. - or would they all somehow be tied together via STEEM?
👍  ,
properties (23)
post_id1,467,074
authortimcliff
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t010223348z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 01:02:21
last_update2016-12-02 01:02:21
depth1
children7
net_rshares2,090,806,338,569
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.081 SBD
curator_payout_value0.021 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length465
author_reputation262,354,724,187,317
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (2)
@dantheman ·
$0.11
Just one token and set of witnesses
👍  ,
properties (23)
post_id1,467,363
authordantheman
permlinkre-timcliff-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t014148095z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 01:41:48
last_update2016-12-02 01:41:48
depth2
children1
net_rshares2,115,414,686,202
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.097 SBD
curator_payout_value0.008 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length35
author_reputation240,497,801,758,545
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (2)
@timcliff ·
Cool, that's awesome!
properties (22)
post_id1,467,400
authortimcliff
permlinkre-dantheman-re-timcliff-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t015025269z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 01:50:24
last_update2016-12-02 01:50:24
depth3
children0
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length21
author_reputation262,354,724,187,317
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@thecryptofiend ·
OK so is this the same as side-chains on Bitcoin or the Lightning network?
properties (22)
post_id1,467,555
authorthecryptofiend
permlinkre-timcliff-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t021758056z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 02:17:57
last_update2016-12-02 02:17:57
depth2
children4
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length74
author_reputation323,593,656,929,629
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@timcliff ·
Not sure.
👍  
properties (23)
post_id1,468,383
authortimcliff
permlinkre-thecryptofiend-re-timcliff-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t053248304z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 05:32:48
last_update2016-12-02 05:32:48
depth3
children0
net_rshares12,934,360,307
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length9
author_reputation262,354,724,187,317
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@faddat ·
Definitely not.  

Both achieve the effect of scale, but to be frank this is much, much better.  Once segwit and lightning kick in, I anticipate some issues in the world of bitcoin, specifically because they more or less move some transactions off of the blockchain.  @dantheman's solution does not propose such madness.
👍  , ,
properties (23)
post_id1,469,626
authorfaddat
permlinkre-thecryptofiend-re-timcliff-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t115348195z
categoryblockchain
json_metadata"{"users": ["dantheman"], "tags": ["blockchain"]}"
created2016-12-02 11:53:27
last_update2016-12-02 11:53:27
depth3
children2
net_rshares66,378,676,006
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length320
author_reputation36,587,550,369,900
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (3)
@gikitiki ·
Let's make it happen!!!
properties (22)
post_id1,467,336
authorgikitiki
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t013442666z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 01:34:42
last_update2016-12-02 01:34:42
depth1
children0
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length23
author_reputation8,799,225,435,691
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@liondani · (edited)
$0.11
> What if we redefined the requirements for a valid block to **require** that each account may receive at most **one deposit or one withdraw.**

What would happen if someone **spams** (zero fee) Alice's account at each block with **0.0000000001 STEEM** ?  When would Alice get the chance to **transfer/withdraw** her 100 SBD since on every block her account state would be in **deposit mode**?
👍  , ,
properties (23)
post_id1,467,341
authorliondani
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t013619425z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 01:36:18
last_update2016-12-02 01:40:27
depth1
children17
net_rshares2,143,954,477,975
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.080 SBD
curator_payout_value0.026 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length393
author_reputation91,903,771,336,326
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (3)
@dantheman ·
$0.11
Rate limiting would prevent it.
👍  , , , ,
properties (23)
post_id1,467,353
authordantheman
permlinkre-liondani-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t014006750z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 01:40:06
last_update2016-12-02 01:40:06
depth2
children16
net_rshares2,137,698,824,149
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.095 SBD
curator_payout_value0.010 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length31
author_reputation240,497,801,758,545
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (5)
@liondani · (edited)
But a "strong" account could **delay** (attack) other accounts activity until "they give up", I mean until it makes enough damage  to the network(?)...
👍  
properties (23)
post_id1,467,395
authorliondani
permlinkre-dantheman-re-liondani-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t014906000z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 01:49:06
last_update2016-12-02 02:00:45
depth3
children9
net_rshares510,253,701
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length151
author_reputation91,903,771,336,326
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@abit · (edited)
$0.16
Also it would bring extra limitations if Alice NEED to receive a big quantity of payments in a short period, for example in the scenario of Alibaba Nov. 11 event ([link](https://www.technologyreview.com/s/602850/big-data-game-changer-alibabas-double-11-event-raises-the-bar-for-online-sales/)).

IMO deposit in parallel should be allowed. And perhaps withdrawals should have higher priority than deposit.

(edit: rate limit should still apply, to determine which account has higher priority to withdraw, but then it should be made into consensus, and the downside is it will cause longer replay time if need to check it during replay(edit 2: seems it's not able to make it into consensus nor able to check during replay, as suggested in the post, a bit more computation while generating block, but less while validating)).

(edit 3: theoretically it's possible to include one withdrawal and many deposits into one block, if the amount of withdrawal is less than the initial balance. However, in a single block, if there are more than one operation on same balance object, no matter they're multiple deposits or one withdrawal and some deposits, it means need to modify that object serially, which will have a negative impact on performance)
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
properties (23)
post_id1,469,414
authorabit
permlinkre-dantheman-re-liondani-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t105154333z
categoryblockchain
json_metadata"{"links": ["https://www.technologyreview.com/s/602850/big-data-game-changer-alibabas-double-11-event-raises-the-bar-for-online-sales/"], "tags": ["blockchain"]}"
created2016-12-02 10:52:03
last_update2016-12-02 19:00:45
depth3
children3
net_rshares2,842,535,736,764
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.126 SBD
curator_payout_value0.032 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length1,240
author_reputation111,629,191,115,088
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (34)
@xeroc ·
$0.03
Let me get this straight:

* We prevent people from **spending** more than once a block because of **double-spending** during parallel evaluation
* We prevent people from **receiving** more than once a block because of **write-locks** to the object in the database

Correct?
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
properties (23)
post_id1,469,832
authorxeroc
permlinkre-dantheman-re-liondani-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t123615618z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 12:36:15
last_update2016-12-02 12:36:15
depth3
children1
net_rshares698,943,853,961
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.026 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length274
author_reputation119,919,245,915,690
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (29)
@clains ·
So if we want to do 100000 tps realtime microtransactions. What do we do?
properties (22)
post_id1,467,512
authorclains
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t020911357z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 02:09:24
last_update2016-12-02 02:09:24
depth1
children1
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length73
author_reputation64,071,761,886,755
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@dantheman ·
Discard history
👍  , , ,
properties (23)
post_id1,467,520
authordantheman
permlinkre-clains-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t021118358z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 02:11:18
last_update2016-12-02 02:11:18
depth2
children0
net_rshares270,215,679,683
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length15
author_reputation240,497,801,758,545
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (4)
@baerdric ·
Wow! That was so well explained that I understood the first third of it.  

I visualize it as the same sort of thing that voice to text does when it is only expecting numbers (phone dialing), they rarely get it wrong because they know what to expect. Because of the constraints, it only has to do a small amount of work to verify its analysis. This frees up the channel for outgoing work. 

Then you said the word "replay" and I started getting lost. But that's good, a month ago I would not have understood a thing.
properties (22)
post_id1,467,823
authorbaerdric
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t031712787z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 03:17:15
last_update2016-12-02 03:17:15
depth1
children1
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length516
author_reputation30,588,315,114,755
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@edb ·
Replaying means verifying all existing transactions when a new node downloads the blockchain from scratch. 

In the past three-and-a-half years, I learned a lot about crypto by doing exactly what you did here: I kept reading articles I didn't fully understand.
👍  
properties (23)
post_id1,549,306
authoredb
permlinkre-baerdric-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161213t163438337z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-13 16:34:36
last_update2016-12-13 16:34:36
depth2
children0
net_rshares431,599,551
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length260
author_reputation6,245,332,363,330
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@virtualgrowth ·
Shared on [twitter](https://twitter.com/Steem_Land/status/804537045351809024)
properties (22)
post_id1,468,037
authorvirtualgrowth
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t040651294z
categoryblockchain
json_metadata"{"links": ["https://twitter.com/Steem_Land/status/804537045351809024"], "tags": ["blockchain"]}"
created2016-12-02 04:06:51
last_update2016-12-02 04:06:51
depth1
children1
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length77
author_reputation170,695,559,013,658
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@twitterbot ·
### ![Steem_Land](https://pbs.twimg.com/profile_images/796481381366804481/GZiD2MS0_normal.jpg) **[Steem_Land](https://twitter.com/@Steem_Land/status/804537045351809024)** tweeted @ 02 Dec 2016 - 04:05 UTC

> How to Process 100M Transfers / Second on a Single Blockchain — Steemit [steemit.com/blockchain/@da…](https://t.co/SE0t5wDjlr)
@SteemUps @SteemitPosts @steemit @steemiobot


###### *Disclaimer: I am just a bot trying to be helpful.*
properties (22)
post_id1,468,040
authortwitterbot
permlinkre-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t040651294z-20161202t040752
categoryblockchain
json_metadata{}
created2016-12-02 04:07:51
last_update2016-12-02 04:07:51
depth2
children0
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length440
author_reputation2,789,687,494,229
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@steemitfaucet ·
Dear CTO,

<a href="https://steemdaily.blogspot.com/2016/12/How-to-Process-100M-Transfers-Second-on-a-Single-Blockchain.html" imageanchor="1"><img border="0" src="https://4.bp.blogspot.com/-KotdfDV6MoU/WD-n2qzMPwI/AAAAAAAAAPY/89uXMfNlzHomUM4nIoEyxpUDa3zKWVDrgCK4B/s217/logo-steem-daily.png" /></a>

Resteemed and Upvoted. Excellent post! Thanks!

--------------
### 0.1 Steem was sent to CTO.
properties (22)
post_id1,468,179
authorsteemitfaucet
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t043838858z
categoryblockchain
json_metadata"{"links": ["https://steemdaily.blogspot.com/2016/12/How-to-Process-100M-Transfers-Second-on-a-Single-Blockchain.html"], "image": ["https://4.bp.blogspot.com/-KotdfDV6MoU/WD-n2qzMPwI/AAAAAAAAAPY/89uXMfNlzHomUM4nIoEyxpUDa3zKWVDrgCK4B/s217/logo-steem-daily.png"], "tags": ["blockchain"]}"
created2016-12-02 04:38:39
last_update2016-12-02 04:38:39
depth1
children0
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length392
author_reputation5,580,417,174,769
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@cata22 ·
I wonder how one would combat internet fraud if everything would be done in the finance world by blockchain...?
properties (22)
post_id1,469,399
authorcata22
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t104811841z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 10:48:06
last_update2016-12-02 10:48:06
depth1
children1
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length111
author_reputation323,593,656,929
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@windn ·
ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее
properties (22)
post_id16,735,986
authorwindn
permlinkre-cata22-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20171102t223118938z
categoryblockchain
json_metadata"{"app": "steemit/0.1", "tags": ["blockchain"]}"
created2017-11-02 22:31:18
last_update2017-11-02 22:31:18
depth2
children0
net_rshares0
last_payout2017-11-09 22:31:18
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length638
author_reputation4,147,417,709
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@jacobcards ·
Dan you might just save the world keep up the work
properties (22)
post_id1,469,764
authorjacobcards
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t121921949z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 12:19:21
last_update2016-12-02 12:19:21
depth1
children1
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length50
author_reputation48,977,881,936,844
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@windn ·
свеча
properties (22)
post_id16,736,010
authorwindn
permlinkre-jacobcards-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20171102t223149251z
categoryblockchain
json_metadata"{"app": "steemit/0.1", "tags": ["blockchain"]}"
created2017-11-02 22:31:48
last_update2017-11-02 22:31:48
depth2
children0
net_rshares0
last_payout2017-11-09 22:31:48
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length5
author_reputation4,147,417,709
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@xeroc ·
$0.03
That's a genius solution!!
The limitations of one 'transfer' (e.g. balance changing op) per account per block makes sense to enable parallel execution of ops. I like the idea a lot, however, I am not sure if our sister Blockchain BitShares can deal with this limitation as it means that you cannot build trading bots that trade on multiple markets at the same time, but would require operators to run multiple accounts (still not a show-stopper).

Anyways, I like where this is going!
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
properties (23)
post_id1,469,805
authorxeroc
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t122901415z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 12:29:00
last_update2016-12-02 12:29:00
depth1
children4
net_rshares699,418,341,025
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.026 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length484
author_reputation119,919,245,915,690
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (35)
@glitterfart ·
Do we'll ever need this kind of velocity with BitShares ? It makes sense with a social plateform but the 100,000 Tx/sec seems to be enough even with BitShares eating a large % of Visa and Mastercard markets. Does it ?
properties (22)
post_id1,470,341
authorglitterfart
permlinkre-xeroc-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t140118871z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 14:01:06
last_update2016-12-02 14:01:06
depth2
children3
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length217
author_reputation48,355,340,351,999
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@xeroc ·
Good point .. but BitShares is not just VISA, but also NYSE on a global scale ..
👍  
properties (23)
post_id1,470,381
authorxeroc
permlinkre-glitterfart-re-xeroc-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t140854449z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 14:08:54
last_update2016-12-02 14:08:54
depth3
children2
net_rshares177,652,092,839
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length80
author_reputation119,919,245,915,690
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@l0k1 ·
It is about dividing the tasks, one per graph node per block is not the right solution - every transaction involves two nodes by user, and multiple nodes by token. Maybe one per payer. Synchronisation with massive parallelisation requires prioritisation of propagation, ensuring frequent transactions to be clustered, but whenever possible, spread across many nodes, by frequency. Geographical aggregation and association aggregation form transient maps that show how to keep sync without total convergence of blockchain state. So long as the nodes always see the current state of the parts they work with (to some degree of immediately visible provenance), it doesn't have to fully converge, or be permanently stored.

There is many approaches to this, i am very interested to see what people turn up.
👍  , , , ,
properties (23)
post_id1,470,508
authorl0k1
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t143016084z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-02 14:30:21
last_update2016-12-02 14:30:21
depth1
children0
net_rshares263,143,564,818
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length802
author_reputation94,769,080,451,415
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (5)
@linkback-bot-v0 ·
This post has been linked to from another place on Steem.


  - [Advanced Steem Metrics Report for 1st December 2016](https://steemit.com/steemit/@ontofractal/advanced-steem-metrics-report-for-1st-december-2016) by @ontofractal




Learn more about and upvote to support [**linkback bot v0.5**](https://steemit.com/steemit/@ontofractal/steem-linkback-bot-v0-5-the-reddit-awareness-release). Flag this comment if you don't want the bot to continue posting linkbacks for your posts.

Built by @ontofractal
properties (22)
post_id1,472,316
authorlinkback-bot-v0
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-linkbacks
categoryblockchain
json_metadata{}
created2016-12-02 19:45:03
last_update2016-12-02 19:45:03
depth1
children0
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length504
author_reputation1,915,235,672,807
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@alexgr ·
>It is entirely possible to build a workstation that supports 44 cores which means that this blockchain should be able to process 8.8M transfers per second.

Porting to GPU threading might be more practical, although I don't know if there are any obstacles.

>A blockchain that desires to scale must achieve the following:
-perform a small number of well defined tasks
-operate on a protocol defined state
-minimal change in function over time
-ensure that all transactions in a block are independent
-minimize the number of sequential steps per block

I'd also add an encoding scheme (in effect a custom-made compression), to minimize bytes used. The less bytes there are, the easier it is to fit in faster mediums of storage... It may not be a problem now, but over time it will be if a blockchain processes a lot of data...
properties (22)
post_id1,493,065
authoralexgr
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161205t201001798z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-05 20:10:03
last_update2016-12-05 20:10:03
depth1
children0
net_rshares0
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length826
author_reputation45,592,025,711,903
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@arcurus ·
instead of limiting the  transactions per account per block, wouldnt it be enough to simply sort the transactions in an block after the accounts?
👍  
properties (23)
post_id1,505,960
authorarcurus
permlinkre-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161207t124932000z
categoryblockchain
json_metadata"{"tags": ["blockchain"]}"
created2016-12-07 12:49:33
last_update2016-12-07 12:49:33
depth1
children0
net_rshares4,915,487,100
last_payout2017-01-02 05:18:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length145
author_reputation549,540,873,857
root_title"How to Process 100M Transfers / Second on a Single Blockchain"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)