Pages:
Author

Topic: what (technically) enforces bitcoin not to exceed 21 million cap? (Read 4929 times)

donator
Activity: 1218
Merit: 1079
Gerald Davis
Quote
The same scenario would apply to exchanges,

I can think of one exchange that did not spend enough of their gross margin checking on changes in different versions.

Agreed and even if they survive it will have cost them many magnitudes more in future profits than employing someone competent to keep them compliant would have ever cost. 
donator
Activity: 1218
Merit: 1079
Gerald Davis
Quote
No, I wouldn't, and neither would MANY other people.

Here is a question from someone obviously too dumb for bitcoin:

In the bitcoin "who would run it" universe, there are about 8 people who matter - the guys who run the 8 biggest pools (ignoring P2P for now).  If the right (wrong) two of those guys "ran it" (for whatever reason), then all the other 10,000 hashers would be impotent.

See, that's not even a question.  How dumb is that?

That is incorrect.  Tomorrow the top three pools could start producing blocks which pay them 10,000 BTC.  Nothing stops them other than the fact that every other node, user, merchant, and exchange would simply see those coins as invalid and drop the blocks they produce.  Those miners would simply no longer be on the Bitcoin network anymore.  In time difficulty would fall and the miners who remain would be far more profitable.

Miners can't force a consensus change to the rules of Bitcoin.  The security model of Bitcoin is that every single node implicitly does not trust ANYTHING another node broadcasts.  When your node receives a block or transaction from a peer the first thing it does is independently verify that block or transactions.  It doesn't matter if hundred thousands nodes have already done so it implicitly distrusts every other node and so it verifies it for itself.  If it doesn't verify then it is dropped, your node won't even relay it to other nodes.  The block or transaction is just discarded.  Your node knows all the rules for the network and doesn't need a miner to validate them.

It is a myth that miners are the primary security mechanism for Bitcoin.  Independent nodes using independent verification are the security mechanism for Bitcoin.  There is one thing that nodes can't do among themselves and that is deal with a problem of multiple valid but otherwise mutually incompatible transactions or blocks.  They don't trust other nodes so they can't just ask another node, they don't vote because that could be easily circumvented with a Sybil attack, they don't have a super node or hierarchy for solving problems because that would be a "center" to the network.  So if you have part of the network thinking I sent a coin to address "A" and part of the network thinking I sent it to address "B" they have no way to resolve that deadlock.  Both transactions are valid, both follow the rules, however they both can't exist.  Money can't work without an absolute agreement on where the money is.

Miners force a resolution to that deadlock by placing either "A" or "B" into the next block.  Nodes favor confirmed transactions over unconfirmed ones and that creates a way to break the deadlock.  That is the sole purpose of miners, they are actually a very small portion of the security system in Bitcoin and for a good thing.  If nodes were "dumb" and implicitly trusted miners for the complete security of the network, it would make miners a "super peer" and the system would have been destroyed a long time ago.
legendary
Activity: 1638
Merit: 1001
Quote
No, I wouldn't, and neither would MANY other people.

Here is a question from someone obviously too dumb for bitcoin:

In the bitcoin "who would run it" universe, there are about 8 people who matter - the guys who run the 8 biggest pools (ignoring P2P for now).  If the right (wrong) two of those guys "ran it" (for whatever reason), then all the other 10,000 hashers would be impotent.

See, that's not even a question.  How dumb is that?



legendary
Activity: 1638
Merit: 1001
Quote
The same scenario would apply to exchanges,

I can think of one exchange that did not spend enough of their gross margin checking on changes in different versions.

newbie
Activity: 1
Merit: 0
OK, scenario 1). >50% of miners readjust the reward scheme. This is clearly in their interest, particularly as the block rewards dwindle.

The standard answer, repeated in this thread, is that they'd also need to convince the majority of users to go with their fork, and that nobody would do, because on that fork their coins would be less valuable, and so the altered fork would wither and die. I have never really been convinced by the validity of this argument.

1) Would you really need to convince everyone? Surely all you'd need to do is convince the few people running in major businesses dealing in bitcoin. If enough exchanges switched entirely to the altered fork, then that would quickly become the most valued/used chain. If BTC-e announce they are upgrading to bitcoin v1.3 or whatever and will only pay out in that, then everyone with coin in there instantly is not only going to be using it, but also incentivised to promote the use of v1.3 over the older fork (because otherwise their holdings will be worthless).

2) If you have >50% hashing power, you could e.g. alternate between messing with the old chain (not including transactions in blocks etc.) for a day and then focusing on mining your altered fork for a day. Not only does this incentivize clients to switch (so they can get their transactions working smoothly), but also motivate miners to switch over and try the new chain (as there will be less competition).

3) It's easier to convince people about the benefits of inflation than most bitcoiners think. A few bucks spent on good PR could do it in a weekend. Most people are happy with the current state of $ inflation, and there are good economic arguments as to why it should be the case. Nobody cares about the government printing dollars as long as no dollars come out of their wallets.

4) There is very little consequence for miners if they try this 'attack' and fail. They can switch back to the old chain and resume mining, losing only their income during the course of the forking.
donator
Activity: 1218
Merit: 1079
Gerald Davis
That was my point initially: -Forcing- it on people won't work. Changing it, and people would'nt accept, unless there was a DAMN good reason to. People would only accept it if there was a concensus that such a change was necessary. I can't forsee such thing happening now, but in 50 years, if Bitcoin gets mainstream, it could very well happen. Economists have no damn idea of how a deflationnary economy works. I may very well be that it can't work. And if it turns out to be the case, then bitcoin will have to change, or die.

Getting a consensus on any non controversial issue in a large group is nearly impossible.  This is why there are no governments (beyond maybe tribe level) which work on consensus.

All you can do is fork the blockchain, you can't prevent 100% of the people on the planet from using the original.   So it is more probable that there is a hard fork and people choose sides than the entire human race reaches a consensus on an issue.

Some outcomes that may occur:

The blockchain is forked and the new fork is supported by only a tiny minority.  A super majority continue to use the existing fork.  The new fork fails to generate the critical mass necessary and eventually dies off, is abandoned, or is attacked.  The same thing can happen to the old fork is the roles are reversed.

The blockchain is forked and the new fork is supported a small but self sufficient minority.  The new co-exists along side the old fork but never becomes as large or as widely accepted as the original.  Due to the confusion of both forks calling themselves "Bitcoin" it is very likely the minority fork will be forced to adopt a different name.  Once again the same thing can happen to the old fork is the roles are reversed.


The blockchain is forked and the new fork is supported by roughly half of users.   Neither fork is willing to give ground and both continue to call themselves "Bitcoin".  This creates mass confusion as there are now two mutually incompatible "Bitcoins".  Human nature being what it is, members of each fork attempt to attack the other fork, exploit flaws, spread FUD to discredit it.  The fragmentation of user support combined with the attacks and confusion of having two incompatible networks both claiming to be "Bitcoin" eventually kills the project.  Bitcoin (both "Bitcoins") eventually die off and the best we can hope for is another crypto-currency becomes the new defacto standard.

The inertia will always be with the original fork.  To remain on the original fork you don't need to do anything.  To join the new fork requires change.   Obviously the third scenario would be a worst case scenario.  It is for this reason many Bitcoin users are pragmatic and will not support hard forks that are controversial because there never will be a consensus.  It is better to work with what we got then let perfect be the enemy of good.

Quote
Now maybe many would not change, but the side with economic majority would win, because those who refuse the change would see their coin become useless if most merchants prefer the "newcoins".

That is a misconception by default at the point of the fork all users would have "coins" on both networks.  If newcoin is adopted and oldcoin becomes worthless then the user hasn't lost any coins.  However what if the disruption undermines confidence in the network and you see the value of both coins falls, merchant support wane, and exchange rates plummet.  While you may still have the same number of "coins" it is entirely possible that the value (in terms of purchasing power) of your oldcoins + newcoins is less than the value of your current coins.
donator
Activity: 1218
Merit: 1079
Gerald Davis
I don't get this, say I have one private key holding 1000 BTC, there is a fork day 0, I then send 1 BTC each day, which day would the transactions be valid on which fork and why?

In that very limited example the 100 BTC and any direct subsequent tx would remain valid on both forks for an unlimited period of time.

However a more realistic scenario is going to involve "contamination" with outputs which are valid on only one fork or another.

Let say I am a miner and I mine a block on fork "B".  My reward is only valid on fork "B".  Now lets say I owe you some coins so send coins to your wallet using coins that are valid only on fork B.

If your wallet creates a tx which uses "pre fork" coins (valid on both A & B) and fork B coins then any output of that transaction (including the change back to you) would only be valid on fork B. The same dynamic is happening with with "fork A" coins.   

If it helps you visualize imagine all the coins can be put into one of three buckets "valid on A & B", "A only", and "B only"  So on a hypothetical day 0 all existing "coins" (technically unspent outputs) are in the "valid on A & B" bucket.  Any coins mined on A or B forks are in their respective buckets.

Any tx which has inputs from both "valid on A & B" AND "A only" will put the output of the tx in the "A only" bucket and the input in the "B only" bucket.
Any tx which has inputs from both "valid on A & B" AND "B only" will put the output of the tx in the "A only" bucket and the input in the "B only" bucket.
Any tx which has inputs only from "valid on A & B" but is only valid on one chain (due to differing chain rules) will result in the output going to that chains buck and the input going to the other chains bucket.
There is no method to move coins from "A only" or "B only" back to "valid on A & B".
There is no method to create a valid tx using inputs from "A only & B only".

So like a fork in the road where the roads diverge slowly into the distance, the two forks of the blockchain will also diverge.  At day 0 they are almost identical but with time they will become more and more dissimilar.  The "valid on A & B" buckets will be depleted over time.
legendary
Activity: 3472
Merit: 4801
That was my point initially: -Forcing- it on people won't work. Changing it, and people would'nt accept, unless there was a DAMN good reason to. People would only accept it if there was a concensus that such a change was necessary. I can't forsee such thing happening now, but in 50 years, if Bitcoin gets mainstream, it could very well happen. Economists have no damn idea of how a deflationnary economy works. I may very well be that it can't work. And if it turns out to be the case, then bitcoin will have to change, or die.

Now maybe many would not change, but the side with economic majority would win, because those who refuse the change would see their coin become useless if most merchants prefer the "newcoins". And I suspect that beyond any ideological ideal that early adopter had about bitcoin, if it ever gets mainstream, merchants will make the simple selfish choice of "which coin gives me more money?". And if we ever get in an economic crisis in which people would start believing that changing the supply would be necessary, I suspect that most would to the switch because it is a desperate mesure.

You have far more faith in the ability of the human race as a whole to come to a consensus about changing anything.

Far more likely is that some alternative crypto-currency (or alternative currency in general) is adopted among some groups.  If a deflationary currency can't survive, bitcoin will slowly die as the other currency grows.  Eventually the "newcoin" currency will replace bitcoin.
full member
Activity: 157
Merit: 100
But all your "open source code" bla bla and "everybody can check" non sense doesn't matter.

If devs would want to change the cap, they would release some statements reasoning the cap limit change, besides changing the code.

If the statement would go "We really think the new cap is better because of ... and ... and ..." signed by "laanwj", "Gavin Andresen" and "sipa" (the 3 guys with the commits) then people would accept it and update.

No, I wouldn't, and neither would MANY other people.


That was my point initially: -Forcing- it on people won't work. Changing it, and people would'nt accept, unless there was a DAMN good reason to. People would only accept it if there was a concensus that such a change was necessary. I can't forsee such thing happening now, but in 50 years, if Bitcoin gets mainstream, it could very well happen. Economists have no damn idea of how a deflationnary economy works. I may very well be that it can't work. And if it turns out to be the case, then bitcoin will have to change, or die.

Now maybe many would not change, but the side with economic majority would win, because those who refuse the change would see their coin become useless if most merchants prefer the "newcoins". And I suspect that beyond any ideological ideal that early adopter had about bitcoin, if it ever gets mainstream, merchants will make the simple selfish choice of "which coin gives me more money?". And if we ever get in an economic crisis in which people would start believing that changing the supply would be necessary, I suspect that most would to the switch because it is a desperate mesure.

legendary
Activity: 3472
Merit: 4801
But all your "open source code" bla bla and "everybody can check" non sense doesn't matter.

If devs would want to change the cap, they would release some statements reasoning the cap limit change, besides changing the code.

If the statement would go "We really think the new cap is better because of ... and ... and ..." signed by "laanwj", "Gavin Andresen" and "sipa" (the 3 guys with the commits) then people would accept it and update.

No, I wouldn't, and neither would MANY other people.

staff
Activity: 4284
Merit: 8808
Thats nonsense, no one would run it regardless of what trumped up excuses were given.  And if you did— it would moot bitcoin, anyone who did run that would be stupid enough to deserve what they get.
legendary
Activity: 1232
Merit: 1011
Monero Evangelist
But all your "open source code" bla bla and "everybody can check" non sense doesn't matter.

If devs would want to change the cap, they would release some statements reasoning the cap limit change, besides changing the code.

If the statement would go "We really think the new cap is better because of ... and ... and ..." signed by "laanwj", "Gavin Andresen" and "sipa" (the 3 guys with the commits) then people would accept it and update.

And b0000m, it's gone.

The question was, if it's possible and some people have the power to do it. And they have.
hero member
Activity: 1011
Merit: 721
Decentralize everything
Interesting read, thanks for posting OP.
hero member
Activity: 725
Merit: 503
spending them on one side would not mean spending them on the other.
How is it determined on which chain of the fork a transmit applies? Such a fork does not change the transmit protocol.

It doesn't matter a given transaction over time will only be valid on one fork or another.

For example the coins from the first block after the fork would only be valid on the fixed reward fork.  Nodes on the the original fork would see it as invalid.

This also means any spend which uses those coins would also only be seen as valid on one fork.   Since the input of any tx is the output of prior tx it also invalidated all subsequent tx which use the change from that transaction.

While at day 0 most tx will be valid on both halves of the fork, like a metaphorical fork in the road, the two chains will diverage over time and eventually the vast majority of transactions will only be valid on a single fork.

I don't get this, say I have one private key holding 1000 BTC, there is a fork day 0, I then send 1 BTC each day, which day would the transactions be valid on which fork and why?
legendary
Activity: 3472
Merit: 4801
That reminds me.  I should send Overstock a copy of my resume so they have it on file.  Never know if they might need the services of someone familliar with the bitcoin protocol.
Never know.  We recently saw a hedge fund hiring for a junior bitcoin currency trader.  Maybe next year Overstock will be looking for a blockchain analyst.

I'm looking forward to the day when I have a job where I can get a portion of my salary paid in bitcoin.  Can't be that far off.
donator
Activity: 1218
Merit: 1079
Gerald Davis
That is absolutely not true.  There are no pre-mined coins in bitcoin.

You mean Satoshi did not premine bitcoin? What was his incentive then working on 2 years on the project (probably as a team)? Good will alone? I do not mind him premine

There really was no premine and you can _trivially_ verify it for yourself. Please spend a few minutes actively investigating rather than believing charlatans on the forum, before wasting may more of ours.  This is the technical subforum, it's reasonable to expect you to be able to do a bit of your own homework.


oh well, it is for sure possible that I have been misled by all the sites I have visited. But I will kindly ask not to be blamed because lots of sites claim the premining of bitcoin as I have linked some of many. I really would like to learn about it. Is there a way I can check it on blockchain or something? I really dunno how to check first blocks and how should I interpret them, a little explanation would be appreciated and also help whoever reads the topic and have been misled about the issue like myself.

All your links didn't indicate Satoshi premined Bitcoin, they speculated on how many coins he may have mined in the first year, after it had been published publicly but was not yet popular beyond a handful of people.  Did Satoshi mine a lot of coins?  Probably.  Did he premine Bitcoin? No.  Did he manipulate the network, set difficulty so low he could "insta-mine" thousands of blocks within days? No.
member
Activity: 98
Merit: 10
That is absolutely not true.  There are no pre-mined coins in bitcoin.

You mean Satoshi did not premine bitcoin? What was his incentive then working on 2 years on the project (probably as a team)? Good will alone? I do not mind him premine

There really was no premine and you can _trivially_ verify it for yourself. Please spend a few minutes actively investigating rather than believing charlatans on the forum, before wasting may more of ours.  This is the technical subforum, it's reasonable to expect you to be able to do a bit of your own homework.


oh well, it is for sure possible that I have been misled by all the sites I have visited. But I will kindly ask not to be blamed because lots of sites claim the premining of bitcoin as I have linked some of many. I really would like to learn about it. Is there a way I can check it on blockchain or something? I really dunno how to check first blocks and how should I interpret them, a little explanation would be appreciated and also help whoever reads the topic and have been misled about the issue like myself.
donator
Activity: 1218
Merit: 1079
Gerald Davis
Now imagine overstock.  Lets say someday overstock is doing a billion dollars a year in Bitcoin sales.  Do you think the board retaining bitcoin developers on the payroll to ensure the company's network risks are hedged would be a good idea.  Shareholders might even say that it was their fudiciary duty to ensure they take steps to protect the company's bottom line.

That reminds me.  I should send Overstock a copy of my resume so they have it on file.  Never know if they might need the services of someone familliar with the bitcoin protocol.

Never know.  We recently saw a hedge fund hiring for a junior bitcoin currency trader.  Maybe next year Overstock will be looking for a blockchain analyst.
legendary
Activity: 3472
Merit: 4801
Now imagine overstock.  Lets say someday overstock is doing a billion dollars a year in Bitcoin sales.  Do you think the board retaining bitcoin developers on the payroll to ensure the company's network risks are hedged would be a good idea.  Shareholders might even say that it was their fudiciary duty to ensure they take steps to protect the company's bottom line.

That reminds me.  I should send Overstock a copy of my resume so they have it on file.  Never know if they might need the services of someone familliar with the bitcoin protocol.

donator
Activity: 1218
Merit: 1079
Gerald Davis
Open source does not mean that it is accessible to ordinary users. Most people don't know C++ and can't understand the code.

Nobody is saying your average non-developer grandmother is going to scrutinize the code.  However even among experienced developers the population is large enough that the probability of nobody noticing a change in the source code is remote.  

In this case the subsidy per block is very transparent and simple.  
Code:
int64_t GetBlockValue(int nHeight, int64_t nFees)
{
    int64_t nSubsidy = 50 * COIN;

    // Subsidy is cut in half every 210,000 blocks which will occur approximately every 4 years.
    nSubsidy >>= (nHeight / Params().SubsidyHalvingInterval());

    return nSubsidy + nFees;
}
https://github.com/bitcoin/bitcoin/blob/047ee427e73a3e993b72f0480a4ab77a65c81941/src/main.cpp#L1094

Tools like git allow you to quickly summarize line by line changes between versions.   I know I at least look over the diffs between versions.   For entities who's financial fortunes depend on Bitcoin there is huge vested interest to ensure the codebase doesn't contain malicious code.  Lets imagine nobody at the second market (operator of Bitcoin Trust) has any knowledge of C++.  They have money, and money can buy the services of an expert.  Do you think it might be in their economic self interest to use a tiny tiny tiny % of their gross revenue to have an expert or two review the git diffs to ensure the network they depend heavily on for the financial prosperity isn't maliciously modified?

The same scenario would apply to exchanges, service providers, and even merchants who someday may be highly dependent on Bitcoin.  Lets say someday Overstock is doing a billion dollars a year in Bitcoin sales.  Do you think it might be prudent for the the board to retain some bitcoin developers on the payroll to ensure the risks associated with the bitcoin network are mitigated?  Shareholders might even say that it was their fiduciary duty to ensure they take steps to protect the company's bottom line against a known risk factor.

Then there are countless hackers, hobbyists, and academic developers.  Finding a hidden poison pill would be massive.  None of them will notice it?  That is the power of open source.   It doesn't take every human on the planet looking at it.  Even 0.1% of the population is many magnitudes more eyeballs than what ends up seeing closed source software.
Pages:
Jump to: