Viewing a response to: @dantheman/how-to-process-100m-transfers-second-on-a-single-blockchain
> 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**?
author | liondani |
---|---|
permlink | re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t013619425z |
category | blockchain |
json_metadata | {"tags":["blockchain"]} |
created | 2016-12-02 01:36:18 |
last_update | 2016-12-02 01:40:27 |
depth | 1 |
children | 17 |
last_payout | 2017-01-02 05:18:54 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.080 HBD |
curator_payout_value | 0.026 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 393 |
author_reputation | 95,095,146,236,111 |
root_title | "How to Process 100M Transfers / Second on a Single Blockchain" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 1,894,439 |
net_rshares | 2,143,954,477,975 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
liondani | 0 | 2,097,039,939,954 | 100% | ||
sulev | 0 | 46,404,284,320 | 100% | ||
ivanvan | 0 | 510,253,701 | 100% |
Rate limiting would prevent it.
author | dantheman |
---|---|
permlink | re-liondani-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t014006750z |
category | blockchain |
json_metadata | {"tags":["blockchain"]} |
created | 2016-12-02 01:40:06 |
last_update | 2016-12-02 01:40:06 |
depth | 2 |
children | 16 |
last_payout | 2017-01-02 05:18:54 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.095 HBD |
curator_payout_value | 0.010 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 31 |
author_reputation | 240,292,002,602,347 |
root_title | "How to Process 100M Transfers / Second on a Single Blockchain" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 1,894,458 |
net_rshares | 2,137,698,824,149 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
liondani | 0 | 2,090,620,593,084 | 100% | ||
sulev | 0 | 46,404,284,320 | 100% | ||
reported | 0 | 113,567,714 | 100% | ||
johnathanhenry | 0 | 50,125,330 | 76% | ||
ivanvan | 0 | 510,253,701 | 100% |
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)
author | abit |
---|---|
permlink | re-dantheman-re-liondani-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t105154333z |
category | blockchain |
json_metadata | {"tags":["blockchain"],"links":["https://www.technologyreview.com/s/602850/big-data-game-changer-alibabas-double-11-event-raises-the-bar-for-online-sales/"]} |
created | 2016-12-02 10:52:03 |
last_update | 2016-12-02 19:00:45 |
depth | 3 |
children | 3 |
last_payout | 2017-01-02 05:18:54 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.126 HBD |
curator_payout_value | 0.032 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 1,240 |
author_reputation | 141,171,499,037,785 |
root_title | "How to Process 100M Transfers / Second on a Single Blockchain" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 1,897,065 |
net_rshares | 2,842,535,736,764 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
anonymous | 0 | 177,650,849,877 | 100% | ||
hello | 0 | 47,949,517,220 | 100% | ||
world | 0 | 18,012,714,712 | 100% | ||
fufubar1 | 0 | 26,194,216,687 | 100% | ||
liondani | 0 | 2,097,018,707,606 | 100% | ||
xeroc | 0 | 252,490,492,353 | 100% | ||
pairmike | 0 | 21,160,953,119 | 100% | ||
steve-walschot | 0 | 55,159,461,830 | 100% | ||
blakemiles84 | 0 | 51,804,059,278 | 100% | ||
michaelx | 0 | 5,152,469,236 | 100% | ||
albertogm | 0 | 8,623,893,870 | 100% | ||
mrhankeh | 0 | 101,563,119 | 100% | ||
snowden | 0 | 70,365,540 | 100% | ||
raymondspeaks | 0 | 2,746,456,136 | 100% | ||
wildchild | 0 | 54,029,860 | 100% | ||
cryptojoy.com | 0 | 958,565,785 | 100% | ||
phenom | 0 | 5,629,496,384 | 100% | ||
mondeja | 0 | 1,663,553,054 | 100% | ||
sulev | 0 | 46,404,284,320 | 100% | ||
brendio | 0 | 8,666,294,111 | 100% | ||
stevescriber | 0 | 71,012,912 | 100% | ||
hopefoundation | 0 | 50,755,452 | 100% | ||
nulliusinverba | 0 | 1,590,394,967 | 100% | ||
cryptochart | 0 | 50,050,891 | 100% | ||
ct-gurus | 0 | 184,550,752 | 100% | ||
tracemayer | 0 | 10,194,524,215 | 100% | ||
inarix03 | 0 | 50,182,131 | 100% | ||
dhrms | 0 | 232,008,369 | 100% | ||
dealzgal | 0 | 58,902,836 | 100% | ||
marialin | 0 | 1,074,778,704 | 100% | ||
ianboil | 0 | 1,250,221,617 | 100% | ||
dropahead | 0 | 58,080,236 | 100% | ||
m3rcos1ty | 0 | 72,544,318 | 100% | ||
lindo | 0 | 85,785,267 | 100% |
> 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). This! Amazon could have an account and dozens of people may want to pay at the same time, especially during Christmas session!
author | xeroc |
---|---|
permlink | re-abit-re-dantheman-re-liondani-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t123816661z |
category | blockchain |
json_metadata | {"tags":["blockchain"]} |
created | 2016-12-02 12:38:15 |
last_update | 2016-12-02 12:38:15 |
depth | 4 |
children | 2 |
last_payout | 2017-01-02 05:18:54 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.094 HBD |
curator_payout_value | 0.026 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 299 |
author_reputation | 118,819,064,085,695 |
root_title | "How to Process 100M Transfers / Second on a Single Blockchain" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 1,897,585 |
net_rshares | 2,322,507,693,595 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
anonymous | 0 | 177,650,921,202 | 100% | ||
liondani | 0 | 2,098,452,488,073 | 100% | ||
sulev | 0 | 46,404,284,320 | 100% |
But a "strong" account could **delay** (attack) other accounts activity until "they give up", I mean until it makes enough damage to the network(?)...
author | liondani |
---|---|
permlink | re-dantheman-re-liondani-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t014906000z |
category | blockchain |
json_metadata | {"tags":["blockchain"]} |
created | 2016-12-02 01:49:06 |
last_update | 2016-12-02 02:00:45 |
depth | 3 |
children | 9 |
last_payout | 2017-01-02 05:18:54 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 151 |
author_reputation | 95,095,146,236,111 |
root_title | "How to Process 100M Transfers / Second on a Single Blockchain" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 1,894,508 |
net_rshares | 510,253,701 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
ivanvan | 0 | 510,253,701 | 100% |
There can be account to account rates and other protections.
author | dantheman |
---|---|
permlink | re-liondani-re-dantheman-re-liondani-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t020246930z |
category | blockchain |
json_metadata | {"tags":["blockchain"]} |
created | 2016-12-02 02:02:45 |
last_update | 2016-12-02 02:02:45 |
depth | 4 |
children | 1 |
last_payout | 2017-01-02 05:18:54 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.102 HBD |
curator_payout_value | 0.001 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 60 |
author_reputation | 240,292,002,602,347 |
root_title | "How to Process 100M Transfers / Second on a Single Blockchain" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 1,894,608 |
net_rshares | 2,093,156,815,541 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
liondani | 0 | 2,090,801,482,517 | 100% | ||
jasen.g1311 | 0 | 230,900,909 | 100% | ||
jaredandanissa | 0 | 1,574,683,370 | 100% | ||
johnathanhenry | 0 | 50,125,330 | 76% | ||
ivanvan | 0 | 499,623,415 | 100% |
We can allow an unlimited number of transfers per account if we assume the block producer "summarizes" the changes. The real time validation of the block may take .15 seconds, but replay should be massively parallel.
author | dantheman |
---|---|
permlink | re-liondani-re-dantheman-re-liondani-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t142314431z |
category | blockchain |
json_metadata | {"tags":["blockchain"]} |
created | 2016-12-02 14:23:15 |
last_update | 2016-12-02 14:23:15 |
depth | 4 |
children | 6 |
last_payout | 2017-01-02 05:18:54 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 217 |
author_reputation | 240,292,002,602,347 |
root_title | "How to Process 100M Transfers / Second on a Single Blockchain" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 1,898,288 |
net_rshares | 11,198,532,775 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
cmtzco | 0 | 9,573,724,075 | 100% | ||
jaredandanissa | 0 | 1,574,683,370 | 100% | ||
johnathanhenry | 0 | 50,125,330 | 76% |
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?
author | xeroc |
---|---|
permlink | re-dantheman-re-liondani-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t123615618z |
category | blockchain |
json_metadata | {"tags":["blockchain"]} |
created | 2016-12-02 12:36:15 |
last_update | 2016-12-02 12:36:15 |
depth | 3 |
children | 1 |
last_payout | 2017-01-02 05:18:54 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.026 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 274 |
author_reputation | 118,819,064,085,695 |
root_title | "How to Process 100M Transfers / Second on a Single Blockchain" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 1,897,571 |
net_rshares | 698,943,853,961 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
anonymous | 0 | 177,650,849,877 | 100% | ||
hello | 0 | 47,949,517,220 | 100% | ||
world | 0 | 18,012,714,712 | 100% | ||
fufubar1 | 0 | 26,194,216,687 | 100% | ||
xeroc | 0 | 252,490,492,353 | 100% | ||
pairmike | 0 | 21,160,953,119 | 100% | ||
steve-walschot | 0 | 55,159,461,830 | 100% | ||
blakemiles84 | 0 | 51,804,059,278 | 100% | ||
michaelx | 0 | 5,152,469,236 | 100% | ||
albertogm | 0 | 8,623,893,870 | 100% | ||
mrhankeh | 0 | 101,563,119 | 100% | ||
raymondspeaks | 0 | 2,746,456,136 | 100% | ||
wildchild | 0 | 54,029,860 | 100% | ||
cryptojoy.com | 0 | 958,565,785 | 100% | ||
phenom | 0 | 5,629,496,384 | 100% | ||
mondeja | 0 | 1,663,553,054 | 100% | ||
brendio | 0 | 8,666,294,111 | 100% | ||
stevescriber | 0 | 71,012,912 | 100% | ||
nulliusinverba | 0 | 1,590,394,967 | 100% | ||
ct-gurus | 0 | 184,550,752 | 100% | ||
tracemayer | 0 | 10,194,524,215 | 100% | ||
inarix03 | 0 | 52,463,137 | 100% | ||
dhrms | 0 | 232,008,369 | 100% | ||
dealzgal | 0 | 58,902,836 | 100% | ||
marialin | 0 | 1,074,778,704 | 100% | ||
ianboil | 0 | 1,250,221,617 | 100% | ||
dropahead | 0 | 58,080,236 | 100% | ||
m3rcos1ty | 0 | 72,544,318 | 100% | ||
lindo | 0 | 85,785,267 | 100% |
The limit is 3x per block.
author | dantheman |
---|---|
permlink | re-xeroc-re-dantheman-re-liondani-re-dantheman-how-to-process-100m-transfers-second-on-a-single-blockchain-20161202t130233245z |
category | blockchain |
json_metadata | {"tags":["blockchain"]} |
created | 2016-12-02 13:02:33 |
last_update | 2016-12-02 13:02:33 |
depth | 4 |
children | 0 |
last_payout | 2017-01-02 05:18:54 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 26 |
author_reputation | 240,292,002,602,347 |
root_title | "How to Process 100M Transfers / Second on a Single Blockchain" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 1,897,718 |
net_rshares | 0 |