Pages:
Author

Topic: In re Bitcoin Devs are idiots - page 7. (Read 25432 times)

hero member
Activity: 700
Merit: 500
March 12, 2013, 12:49:04 AM
#72
v0.7 reliance on BDB caused it to be fundamentally broken/flawed. Its actions weren't consistent with either the documented protocol, the higher level source code, or anyone's understanding/expectation of what should have happened.  It was a landmine. 

Does this not argue for a diversity of implementations with different underlying 3rd party libraries ? Clearly it does. But this cannot happen until and unless there is actually a formal-enough spec to enable those to be written w/o ever "groking" all that C++ folklore, which is a moving target anyways ...

I agree on that 100%.  It is inevitable that to survive Bitcoin will need to be move beyond a monoculture.  Right now all the clients share the same "DNA".  If there is a fatal genetic flaw in it then the network will not survive.   This time the "landmine" was accidental, next time it may be planted.
That is not correct.  v0.7 nodes accepted a 1MB block on testnet.  The issue was more complex then just the size of the block.  By the protocol the block which was rejected by some nodes SHOULD have been accepted.  The 250kb soft limit was simply a default for block construction.  Even with it in place nodes should have accepted properly constructed blocks up to the 1MB limit.  It also appears not all v0.7 nodes were affected.  Some accepted the problem block and some didn't.  The defect/limit in BDB wasn't documented and didn't occur in all versions/platforms. 

v0.7 reliance on BDB caused it to be fundamentally broken/flawed. Its actions weren't consistent with either the documented protocol, the higher level source code, or anyone's understanding/expectation of what should have happened.  It was a landmine. 

Notwithstanding that blocks of 1mb should have been accepted if valid, the limit prevented too many of them from being made.

If the limit had been removed at a reasonable time, those blocks would have occasionally been made, and the overall problem would have been much contained.

I would like to also point out that the alexkravets idea re specification is sound. The only way forward for the dev team, provided they wish to preserve a shred of dignity, is a. immediately start work on specification, which is the only priority, and release no further versions until such specification is complete and b. immediately start work on removing all magic numbers and assorted code smelliness from their UNreference implementation of crap, and not release any further version before they've released a clean one.

In that order.

Whoa... All of this... Agreement...
donator
Activity: 1218
Merit: 1079
Gerald Davis
March 12, 2013, 12:44:58 AM
#71
v0.7 reliance on BDB caused it to be fundamentally broken/flawed. Its actions weren't consistent with either the documented protocol, the higher level source code, or anyone's understanding/expectation of what should have happened.  It was a landmine.  

Does this not argue for a diversity of implementations with different underlying 3rd party libraries ? Clearly it does. But this cannot happen until and unless there is actually a formal-enough spec to enable those to be written w/o ever "groking" all that C++ folklore, which is a moving target anyways ...

I agree on that 100%.  It is inevitable that to survive Bitcoin will need to be move beyond a monoculture.  Right now all the clients share the same "DNA".  If there is a fatal genetic flaw in it then the network will not survive.   This time the "landmine" was accidental, next time it may be planted.
hero member
Activity: 756
Merit: 522
March 12, 2013, 12:41:18 AM
#70
That is not correct.  v0.7 nodes accepted a 1MB block on testnet.  The issue was more complex then just the size of the block.  By the protocol the block which was rejected by some nodes SHOULD have been accepted.  The 250kb soft limit was simply a default for block construction.  Even with it in place nodes should have accepted properly constructed blocks up to the 1MB limit.  It also appears not all v0.7 nodes were affected.  Some accepted the problem block and some didn't.  The defect/limit in BDB wasn't documented and didn't occur in all versions/platforms. 

v0.7 reliance on BDB caused it to be fundamentally broken/flawed. Its actions weren't consistent with either the documented protocol, the higher level source code, or anyone's understanding/expectation of what should have happened.  It was a landmine. 

Notwithstanding that blocks of 1mb should have been accepted if valid, the limit prevented too many of them from being made.

If the limit had been removed at a reasonable time, those blocks would have occasionally been made, and the overall problem would have been much contained.

I would like to also point out that the alexkravets idea re specification is sound. The only way forward for the dev team, provided they wish to preserve a shred of dignity, is a. immediately start work on specification, which is the only priority, and release no further versions until such specification is complete and b. immediately start work on removing all magic numbers and assorted code smelliness from their UNreference implementation of crap, and not release any further version before they've released a clean one.

In that order.
full member
Activity: 209
Merit: 100
March 12, 2013, 12:39:27 AM
#69
v0.7 reliance on BDB caused it to be fundamentally broken/flawed. Its actions weren't consistent with either the documented protocol, the higher level source code, or anyone's understanding/expectation of what should have happened.  It was a landmine. 

Does this not argue for a diversity of implementations with different underlying 3rd party libraries ? Clearly it does. But this cannot happen until and unless there is actually a formal-enough spec to enable those to be written w/o ever "groking" all that C++ folklore, which is a moving target anyways ...
hero member
Activity: 756
Merit: 522
March 12, 2013, 12:35:50 AM
#68
Bitcoin is still beta software and untill recently no one got paid to do work on it.

MPOE-PR should stfu and contribute.

I bet they havent even donated to the bitcoin foundation  Tongue

Hurr Durr look how much money we made off free software.

Never donated, never will donate. Things don't work like "here's a foundation we made, give us money".

For that matter, we didn't go to Taaki's stupidferences either.
donator
Activity: 1218
Merit: 1079
Gerald Davis
March 12, 2013, 12:35:40 AM
#67
MPOE-PR: You seem to be under the mistaken impression that the hard fork was caused by something in 0.8. Not so. The block that 0.7 choked on was a valid block. The bug was lurking in 0.7 all along, and was merely uncovered by a 0.8 miner's block. You might as well blame the physician who taps your kneecap to check reflexes, for the bone cancer that he unexpectedly discovers there.

I am not under any suck mistaken impression. Please read what's actually being said, it will help.

The presence of a 250k arbitrary block limit prevented the underlying problem of the db from being discovered until that moment when a perfect storm composed out of a db upgrade and the limit removal created two almost equal miner bases. This could have easily been avoided by simply not relying on magic numbers. It will ever be the case that whenever code contains arbitrary numbers based on arbitrary assumptions that code will break spectacularly.

That is not correct.  v0.7 nodes accepted a 1MB block on testnet.  The issue was more complex then just the size of the block.  By the protocol the block which was rejected by some nodes SHOULD have been accepted.  The 250kb soft limit was simply a default for block construction.  Even with it in place nodes should have accepted properly constructed blocks up to the 1MB limit.  It also appears not all v0.7 nodes were affected.  Some accepted the problem block and some didn't.  The defect/limit in BDB wasn't documented and didn't occur in all versions/platforms.   It appears the number of transactions being changed as a result of the block validation crossed some "magic code" not in the Bitcoin source code but undocumented in some implementations of BDB.

v0.7 reliance on BDB caused it to be fundamentally broken/flawed. Its actions weren't consistent with the documented protocol, the higher level source code, or anyone's understanding/expectation of what should have happened.   Nobody was saying/thinking oh yeah if you make a block with more than x transaction it will abort, cause a rollback, and result in a rejection.  It was a landmine.  
full member
Activity: 209
Merit: 100
March 12, 2013, 12:33:09 AM
#66
Another way to state the real problem: There is no Bitcoin Protocol Spec, most semantics buried in the hairball of the C++ reference implementation
This was actually a good example of something a spec wouldn't help (though would still be good to have). The inconsistent behavior here arose out of 0.8 not faithfully implementing some implicit behavior in BDB. The behavior in question is not anywhere in the Bitcoin code itself, nor is it visible at the interface of BDB and Bitcoin.  If there were a spec it would make no mention of it— and yet the network would be broken all the same.

The key thing is that in a distributed consensus system the most important definition of right is "consistent", this is paramount to all other concerns. A spec is helpful to the extent that it makes it easier to achieve a bit identical consistent behavior in the validation of blocks across all nodes, but because the spec itself can't be executed a spec can never guarantee consistency, at least not in the real world. (well, unless the spec is code— which is effectively what we have, for worse or better)


I respectfully disagree.  

A real protocol specification would enable a whole ecosystem of alternative and interoperable implementations to appear in Scala, Java, Go, C, etc.  

These implementations would NOT use the same flawed 3rd party libraries and there would be a real diversity in Bitcoin land, instead of the monoculture of C++ with all of its "magic" and "folklore".

Once no individual implementation had large enough fraction of the hash rate, then such forks would NOT occur, instead, bugs in a given implementation would only affect some miners, merchants & users but the chain would be just fine.

Let us hope and pray that eventually there will be some effort ( funded perhaps by the Bitcoin Foundation ) to extract and publish such a spec from the C++ hairball formal enough for viable alternative implementations to appear and to interoperate.


Cheers ...
hero member
Activity: 756
Merit: 522
March 12, 2013, 12:29:25 AM
#65
The presence of a 250k arbitrary block limit prevented the underlying problem of the db from being discovered until that moment when a perfect storm composed out of a db upgrade and the limit removal created two almost equal miner bases.
Maybe it wasn't the size of the block that was the problem.

https://bitcointalksearch.org/topic/m.1614374

That one requires more explanation for sure. What exactly?
full member
Activity: 238
Merit: 100
March 12, 2013, 12:28:57 AM
#64
Bitcoin is still beta software and untill recently no one got paid to do work on it.

MPOE-PR should stfu and contribute.

I bet they havent even donated to the bitcoin foundation  Tongue

Hurr Durr look how much money we made off free software.
legendary
Activity: 1400
Merit: 1013
March 12, 2013, 12:24:20 AM
#63
The presence of a 250k arbitrary block limit prevented the underlying problem of the db from being discovered until that moment when a perfect storm composed out of a db upgrade and the limit removal created two almost equal miner bases.
Maybe it wasn't the size of the block that was the problem.

https://bitcointalksearch.org/topic/m.1614374
legendary
Activity: 1498
Merit: 1000
March 12, 2013, 12:24:12 AM
#62
MPOE-PR I am calling for Gavin to not get paid this month by the foundation, I would think your with me on that. Someone needs to take blame for this bug.
hero member
Activity: 756
Merit: 522
March 12, 2013, 12:21:19 AM
#61
MPOE-PR: You seem to be under the mistaken impression that the hard fork was caused by something in 0.8. Not so. The block that 0.7 choked on was a valid block. The bug was lurking in 0.7 all along, and was merely uncovered by a 0.8 miner's block. You might as well blame the physician who taps your kneecap to check reflexes, for the bone cancer that he unexpectedly discovers there.

I am not under any suck mistaken impression. Please read what's actually being said, it will help.

The presence of a 250k arbitrary block limit prevented the underlying problem of the db from being discovered until that moment when a perfect storm composed out of a db upgrade and the limit removal created two almost equal miner bases. This could have easily been avoided by simply not relying on magic numbers. It will ever be the case that whenever code contains arbitrary numbers based on arbitrary assumptions that code will break spectacularly.
staff
Activity: 4284
Merit: 8808
March 12, 2013, 12:18:22 AM
#60
Another way to state the real problem: There is no Bitcoin Protocol Spec, most semantics buried in the hairball of the C++ reference implementation
This was actually a good example of something a spec wouldn't help (though would still be good to have). The inconsistent behavior here arose out of 0.8 not faithfully implementing some implicit behavior in BDB. The behavior in question is not anywhere in the Bitcoin code itself, nor is it visible at the interface of BDB and Bitcoin.  If there were a spec it would make no mention of it— and yet the network would be broken all the same.

The key thing is that in a distributed consensus system the most important definition of right is "consistent", this is paramount to all other concerns. A spec is helpful to the extent that it makes it easier to achieve a bit identical consistent behavior in the validation of blocks across all nodes, but because the spec itself can't be executed a spec can never guarantee consistency, at least not in the real world. (well, unless the spec is code— which is effectively what we have, for worse or better)


(And seriously, shad0wbitz etc. Act like an adult here. Your comments are very uncool.)
sr. member
Activity: 532
Merit: 261
­バカ
March 12, 2013, 12:16:13 AM
#59
Yes, you can surmise exactly that. IT IS MY JOB. I AM DOING MY JOB.

Guess who isn't, and guess what that makes them.
Yeah, I know what you mean... your website have been down for weeks now Tongue
full member
Activity: 238
Merit: 100
March 12, 2013, 12:11:04 AM
#58
Windows 8 hacked users forced to downgrade to Vista.   Tongue
sr. member
Activity: 476
Merit: 250
March 12, 2013, 12:08:12 AM
#57
I AM DOING MY JOB.

Maybe you should just be quiet until the grownups fix your toy.
full member
Activity: 198
Merit: 100
March 12, 2013, 12:06:02 AM
#56
MPOE-PR: You seem to be under the mistaken impression that the hard fork was caused by something in 0.8. Not so. The block that 0.7 choked on was a valid block. The bug was lurking in 0.7 all along, and was merely uncovered by a 0.8 miner's block. You might as well blame the physician who taps your kneecap to check reflexes, for the bone cancer that he unexpectedly discovers there.
hero member
Activity: 756
Merit: 522
March 12, 2013, 12:04:46 AM
#55
there is time to stfu, swallow cox and work the testnet to the bone.

So we can surmise that you didn't find this bug either because you were also busy talking?

Yes, you can surmise exactly that. IT IS MY JOB. I AM DOING MY JOB.

Guess who isn't, and guess what that makes them.
sr. member
Activity: 476
Merit: 250
March 11, 2013, 11:56:05 PM
#54
there is time to stfu, swallow cox and work the testnet to the bone.

So we can surmise that you didn't find this bug either because you were also busy talking?
hero member
Activity: 924
Merit: 1001
Unlimited Free Crypto
March 11, 2013, 11:52:07 PM
#53
I was here and there on IRC and since the storm started to settle and I started to really look at things the way they are without the nervousness.

I would like to apologize to you all. Especially the devs, They did good and saved the day. thank you. And I am sorry for calling you idiots. You rock. Keep it up  Smiley
Pages:
Jump to: