Come-from-Beyond (OP)
Legendary
Offline
Activity: 2142
Merit: 1010
Newbie
|
|
August 27, 2013, 08:17:29 AM |
|
Sometimes there is a 1 minute gap between blocks, sometimes a 1 hour one. But if we take 100 blocks and calculate average gap then it's supposed to be close to 10 minutes. 1000 blocks would give us a value that is even closer to 10 minutes.
What about such a trick: we adjust the difficulty to be 1000 times less and include transactions only into each 1000th block, all other 999 blocks should be "empty". I expect this would stabilize the average gap between "real" blocks. This looks like a trade-off between network bandwidth consumption and block time precision. Am I right?
|
|
|
|
rumbitla
Member
Offline
Activity: 98
Merit: 10
|
|
August 27, 2013, 08:45:57 AM |
|
What?
|
|
|
|
itod
Legendary
Offline
Activity: 1974
Merit: 1077
^ Will code for Bitcoins
|
|
August 27, 2013, 08:48:03 AM |
|
What about such a trick: we adjust the difficulty to be 1000 times less and include transactions only into each 1000th block, all other 999 blocks should be "empty". I expect this would stabilize the average gap between "real" blocks. This looks like a trade-off between network bandwidth consumption and block time precision. Am I right?
Not sure if you were joking, but if you were not: Have you considered what would happen to payment confirmations if the transactions are placed in every 1000th block?
|
|
|
|
Come-from-Beyond (OP)
Legendary
Offline
Activity: 2142
Merit: 1010
Newbie
|
|
August 27, 2013, 08:57:11 AM |
|
What about such a trick: we adjust the difficulty to be 1000 times less and include transactions only into each 1000th block, all other 999 blocks should be "empty". I expect this would stabilize the average gap between "real" blocks. This looks like a trade-off between network bandwidth consumption and block time precision. Am I right?
Not sure if you were joking, but if you were not: Have you considered what would happen to payment confirmations if the transactions are placed in every 1000th block? In my scenario each block is mined every 600 millisecond, so each 1000th block is found every 10 minute.
|
|
|
|
itod
Legendary
Offline
Activity: 1974
Merit: 1077
^ Will code for Bitcoins
|
|
August 27, 2013, 09:50:49 AM |
|
In my scenario each block is mined every 600 millisecond, so each 1000th block is found every 10 minute.
Ah, it was not clear from the opening post. What do you think is gained by extreme block time precision? You need several blocks to confirm transaction, so this averages the variance enough for practical purposes. Four blocks will have smaller relative error around 40 mins than one block around 10 mins.
|
|
|
|
Come-from-Beyond (OP)
Legendary
Offline
Activity: 2142
Merit: 1010
Newbie
|
|
August 27, 2013, 12:05:56 PM |
|
In my scenario each block is mined every 600 millisecond, so each 1000th block is found every 10 minute.
Ah, it was not clear from the opening post. What do you think is gained by extreme block time precision? You need several blocks to confirm transaction, so this averages the variance enough for practical purposes. Four blocks will have smaller relative error around 40 mins than one block around 10 mins. Well, maybe 1000 blocks is too extreme number, 60 seems to be enough. Now I don't use Bitcoin but in the past I recall at least 2 times when I made urgent transactions and had to wait around an hour for the block.
|
|
|
|
TierNolan
Legendary
Offline
Activity: 1232
Merit: 1104
|
|
August 27, 2013, 12:53:04 PM |
|
Well, maybe 1000 blocks is too extreme number, 60 seems to be enough. Now I don't use Bitcoin but in the past I recall at least 2 times when I made urgent transactions and had to wait around an hour for the block.
Sounds reasonable. The minting rewards could be paid per mini-block too. You would get 25/60 per mini-block. I made similar suggestions to have an alt-chain, so that it was backwards compatible. One issue is that miners can get a lot of the mint reward without actually producing the blocks.
|
1LxbG5cKXzTwZg9mjL3gaRE835uNQEteWF
|
|
|
tgerring
Full Member
Offline
Activity: 142
Merit: 100
Hive/Ethereum
|
|
August 27, 2013, 01:01:15 PM |
|
Block time of 600ms would result in so many orphan chains as to be unusable for at least a dozen confirms.
As it stands with the ASIC race, average block time has decreased to 7 or 8 minutes.
|
|
|
|
itod
Legendary
Offline
Activity: 1974
Merit: 1077
^ Will code for Bitcoins
|
|
August 27, 2013, 02:52:32 PM |
|
Block time of 600ms would result in so many orphan chains as to be unusable for at least a dozen confirms.
Just out of curiosity: Which is minimal block time that would not have significant number of orphan chains, considering today's average client connectivity speed? Let's say that average connection on the world level is 3-4Mbps, doesn't have to be exactly accurate, but is a good guessing point. Also, what would be minimal block time for 20-100 Mbps connections?
|
|
|
|
TierNolan
Legendary
Offline
Activity: 1232
Merit: 1104
|
|
August 27, 2013, 03:07:56 PM |
|
Just out of curiosity: Which is minimal block time that would not have significant number of orphan chains, considering today's average client connectivity speed? Let's say that average connection on the world level is 3-4Mbps, doesn't have to be exactly accurate, but is a good guessing point. Also, what would be minimal block time for 20-100 Mbps connections?
You could probably handle 10 second blocks (so 5 - 15 seconds). They key here is that only every 60th block would be "real", so the check would just be to check the hash for most of them. Having said that, I think ASICs may have a minimum time to do 1 search. They do lots of hashes in parallel.
|
1LxbG5cKXzTwZg9mjL3gaRE835uNQEteWF
|
|
|
BombaUcigasa
Legendary
Offline
Activity: 1442
Merit: 1005
|
|
August 27, 2013, 03:30:35 PM |
|
What about such a trick: we adjust the difficulty to be 1000 times less and include transactions only into each 1000th block, all other 999 blocks should be "empty". I expect this would stabilize the average gap between "real" blocks. This looks like a trade-off between network bandwidth consumption and block time precision. Am I right?
Not sure if you were joking, but if you were not: Have you considered what would happen to payment confirmations if the transactions are placed in every 1000th block? In my scenario each block is mined every 600 millisecond, so each 1000th block is found every 10 minute. The point of confirmation of payment is not number of blocks. It's time. An hour is sufficiently large to prevent any blockchain forks that may allow for double-spending or reversals. The number of blocks in that hour is irrelevant. You are basically saying we should dump 6000 blocks for no reason and have checkpoints every 6000 blocks while wasting probably more than 98% of the work done because the peer latency is higher than the block finding rate. Are you familiar with the term "network convergence"?
|
|
|
|
TierNolan
Legendary
Offline
Activity: 1232
Merit: 1104
|
|
August 27, 2013, 03:54:45 PM |
|
The point of confirmation of payment is not number of blocks. It's time.
That isn't true. The issue is random reversals and malicious reversals. In both cases, they depend purely on the number of blocks (unless the blocks are so fast that network latency is a problem). Less than 1 second could be an issue, but 10-20 seconds would probably be ok (for hash only "blocks"). Another one would be paying for hashing power to reverse a specific transaction. If you paid for 75% of the networking power, you could reverse a (very) large transaction. You could achieve that by making a large payment to fee that double spends the transaction. A: input to double spend B: fee for miners who double spend Output: 0 A mining pool which includes that block would inherently have to mine against the fork. However, mining pools don't support this attack (for obvious reasons).
|
1LxbG5cKXzTwZg9mjL3gaRE835uNQEteWF
|
|
|
Come-from-Beyond (OP)
Legendary
Offline
Activity: 2142
Merit: 1010
Newbie
|
|
August 27, 2013, 04:02:16 PM |
|
The point of confirmation of payment is not number of blocks. It's time.
An hour is sufficiently large to prevent any blockchain forks that may allow for double-spending or reversals. The number of blocks in that hour is irrelevant.
Agree, confidence that a transaction won't be "cancelled" ~~ time. Instead of 3 confirmations u will wait for 3000 ones which come in 30 min +/- 1 min, not 30 min +/- 60 min. You are basically saying we should dump 6000 blocks for no reason and have checkpoints every 6000 blocks while wasting probably more than 98% of the work done because the peer latency is higher than the block finding rate. Are you familiar with the term "network convergence"?
Block finding rate could be adjusted to a reasonable value. Yes, I know about "convergence".
|
|
|
|
BombaUcigasa
Legendary
Offline
Activity: 1442
Merit: 1005
|
|
August 27, 2013, 05:00:35 PM |
|
Well, then my job here is done. Have you looked into altcoins that tried ridiculous fast block times? Or p2pool? Having 1000 empty blocks won't be much different than having 1000 real blocks, the network still has to sync and prepare for the 1000th block when it comes. There is also that feathercoin or something else that gets attacked by an ASIC farm here and there and messes up the trust and functionality for hours at a time because a miner can attack the network with little exposure and great preparations.
I'm not saying faster blocks aren't more helpful, especially if you suggest the confirmation requires 1000 blocks.
And what's your rationale for the 99.9% resource waste for that single important block? Sure, the same reward per time is available, but you just make the network 1000 times less secure and functional, and a bit more wasteful.
If you think you have something, you can always start a new altcoin, maybe testnet only, to see how your solution might work.
|
|
|
|
cunicula
Legendary
Offline
Activity: 1050
Merit: 1003
|
|
August 27, 2013, 05:19:29 PM |
|
I've suggested this before too. It is a good idea. An interesting property here is that the order in which intervening blocks are received doesn't matter. I was told that this is called an acyclic graph if i remember correctly.This likely makes latency issues unimportant (I.e. the empty spacer blocks can come very close together without causing problems). It might be better to slow things down gradually though so that everyone has time to catch up as you approach 1000 blocks (I.e the last 50 blocks come farther apart than the first 950 blocks).
A big advantage here is that you would no longer need 6 full blocks of txns to be secure against double spends. One block with a bunch of spacers built on top of it would suffice. Ask meni about this, he has studied the problem in detail.
|
|
|
|
thezerg
Legendary
Offline
Activity: 1246
Merit: 1010
|
|
August 31, 2013, 12:45:34 AM |
|
Of course, everybody would be mining alt-coins until the payoff block. So you'd have to put a mining reward on those empty blocks. And why make them empty? If a txn is there, might as well include it... that way people can choose their risk vs. wait time.
Yes, maybe it does make sense to reduce the bitcoin difficulty adjustment (and reward of course). After all, that's all litecoin has going for it.
|
|
|
|
grue
Legendary
Offline
Activity: 2058
Merit: 1452
|
|
August 31, 2013, 01:55:38 AM |
|
This looks like a trade-off between network bandwidth consumption and block time precision. Am I right?
There's also orphan blocks. Decreased block time = tons of orphans. Just take a look at all the "fast" alt-coins that failed.
|
|
|
|
cunicula
Legendary
Offline
Activity: 1050
Merit: 1003
|
|
August 31, 2013, 07:56:50 AM |
|
This looks like a trade-off between network bandwidth consumption and block time precision. Am I right?
There's also orphan blocks. Decreased block time = tons of orphans. Just take a look at all the "fast" alt-coins that failed. Since the, as I call them, spacer blocks have no ordering there is no orphan problem for these blocks. Orphans only occur for blocks that can contain txns. The spacer blocks can come a femtosecond apart, still no orphans are possible. My chain might read CKON and yours might read KCNO. Both chains imply distribution of block reward to CKON, so there is no relevant difference between them. The orphan issue arises as you near the txn containing block. For this reason, it is probably best to slow the spacer blocks down. Potentially helpful anslogy: a train always needs to slow down when it approaches a station to pick up passengers (these people are the txns). You can never confirm who has come on board until the frain leaves the station, people could jump on board and hop off before the train leaves (double spend txns). If the train reports the same passenger list after leaving the station, however, you can be sure that everyone is on board for good. There is no reason to slowdown for this report becase no one iscoming on board or leaving. The train just says "yup the psssenger manifest is the same one I reported at the station." This report provides full security against double-spending. Currently, the bitcoin train reports in only when it arrives at a station. This means you hav to wait for 6 full stations to secure a txn. Instead, the train could just check in 2000btimes between stations. Then you would only need to wait a few seconds to go from 1 confirmtion to 6 confirmations. You could also significantly decrease the spacing between stations because they would be approximately a constant time interval apart. This would allow you to go from waiting 5 minutes mean with huge variance for the first confirmation to waiting no more than than say 3 minutes for the first confirmation and at most 3 minutes 10 seconds for 6 confirmations. Unfortunately, you still have to stop at the stations to synchronize passenger logs. Thus there is probably no way of squeezing any more benefit out of the system. Well there is one way, but it would require moving different colors of coins at each station (this stqtion is whites only, the next station is blacks only, every hundreth station is mixed race and coins can be whirewashed or blackfaced at mixed race stations). In this case the whites only stations act like spacer blocks for black passengers and the blacks only statiobs act as spacer blocks for the white stations. You need to aloow for periofic race switching to prevent discrimination and prevent the formation of ethnically segregated wallets. You can get additionl speedup factors this way this say, but it requires users to hold many different colors of coins simultaneously if they want to be able spend at any time. Essentially you get instantaneous confirmations, but you need $100 in your wallet to buy a $1 soda. If you want to spend the full $100 you need to break it up into 100 $1 txns spread over twenty minutes. It is not really a promising approch.
|
|
|
|
BombaUcigasa
Legendary
Offline
Activity: 1442
Merit: 1005
|
|
August 31, 2013, 08:12:48 AM |
|
Since the, as I call them, spacer blocks have no ordering there is no orphan problem for these blocks. Orphans only occur for blocks that can contain txns. The spacer blocks can come a femtosecond apart, still no orphans are possible.
...
Unfortunately, you still have to stop at the stations to synchronize passenger logs. Thus there is probably no way of squeezing any more benefit out of the system.
So the problem of orphan blocks jumps to the transaction blocks. Some miners will try to drop the txn block after 1002 interval blocks with 3 orphans, some will try it at 1005 with 6 orphans, but because of network divergence, until the NEXT txn block is generated, miners will work on forked chains (some miners will see the 1002 blocks, some will see the 1005 blocks, each will add ontop of the last known block). Thus all their work from the last ~10 minutes will be useless. Should someone model this mathematically, this solution would create more forks and orphans than anything that ever existed in cryptocoins, reducing security and increasing upkeep costs. At the benefit of 3 magnitudes more precise block intervals.
|
|
|
|
BombaUcigasa
Legendary
Offline
Activity: 1442
Merit: 1005
|
|
August 31, 2013, 08:18:37 AM |
|
If you really want 600 seconds between blocks, a better idea is to generate some "difficulty transactions" that reuse the peer "diffculty transactions" and these can be based off time elapsed since the last block, or average blocks during the last n seconds. Once the network mathematically agrees that it should be really close to the 10 minutes mark, the base diffculty and the variable difficulty should offer a proof result of a smaller difficulty than needed, such that smaller difficulty shares can be accepted. The difficulty transactions could me merged mined or reused from lower difficulty block attempts, such that no work is wasted and the miner tries to get either a target difficulty block or provides statistical proof that it has been working sufficiently. (see p2pool) The base difficulty would provide a safety net for attacks and the variable difficulty calculation could produce the desired precision. And even in this case, there is the possibility of forks and orphans near the 10 minutes mark, when some miners will find various difficulty blocks or if the peers do not agree on the speed of time for some blocks and they are not universally accepted. We propose a solution to the double-spending problem using a peer-to-peer network.The network timestamps transactions by hashing them into an ongoing chain ofhash-based proof-of-work, forming a record that cannot be changed without redoingthe proof-of-work. The longest chain not only serves as proof of the sequence ofevents witnessed, but proof that it came from the largest pool of CPU power. Aslong as a majority of CPU power is controlled by nodes that are not cooperating toattack the network, they'll generate the longest chain and outpace attackers.
|
|
|
|
|