It's a system completely designed around gaining a consensus. Any slightly differentiation in behaviour means a fork in the chain with catastrophic network-wide consequences. Both the original creator and the current developers are typically against re-implementations, with good reason.
The trouble is, because the exact behaviour isn't documented and depends on subtle implementation quirks, the original implementation already has enough differences in behaviour between different versions to fork the chain with catastrophic network-wide consequences.
Exactly. In the case of the most recent fork, it was a completely unexpected implementation bug that meant that the underlying database ran out of locks, different to the more recent builds that didn't. That was caused just by differences in underlying databases, let alone a whole new verification system as we see here.
Obviously this is not a desirable property of the system. If it's going to be robust against malicious attacks, it must be robust against well-meaning reimplementations.
What does it even mean for Bitcoin to be robust against malicious attacks? Bitcoin has no security definition, just a vague notion of what its users should not be able to do.
Malicious attacks are not the same as consensus failure.
Consensus requires agreement, malicious attacks are orthogonal, unless you're hypothesizing a malicious party introducing an intentionally incompatible node and a significant fraction of users switching to it.
you can detect bugs with one running alone as well. but so what.
if i run one without the bug and accept a payment, you and millions with the bug will just say "meh. this one does not match. will just drop it" and my transaction goes out of the main block.
Some poorly-defined edge cases can only be found with alternative implementations. These are the edge cases that will cause trouble in a network with only one implementation.
> Both the original creator and the current developers are typically against re-implementations, with good reason.
That is not true. Gavin Andressen supports alternate implementations. Take the following quote [1]:
"Diversity is a good thing. Diverse, inter-operating implementations of the Bitcoin protocol make the network more robust against software bugs, denial-of-service attacks, and vulnerabilities. There are several projects re-implementing Bitcoin; if you are a Java or Go or Python or C programmer who wants to see Bitcoin succeed, you should consider helping them out by reviewing, testing, or contributing patches."
He then goes on to list several alternatives, including btcd.
Yea, this is one of those things where that argument gets tricky.
On the flip side one could argue that diversification of implementations is key to the long-term success of Bitcoin. If, let's say, there is a serious issue with bitcoind that shows up somewhere down the road that causes a fork and it is the only implementation everyone is using, there will be a network-wide problem. If there are a number of implementations in the wild, the fork would be contained to a smaller subset of users, and managed accordingly.
Getting to this point of diversification safely is difficult, however, which is why I imagine some of the core devs might be against it. I remember Amir Taaki got a lot of flack when he came out with libbitcoin.
I have the opposite reaction for the same reason. This helps formalizing the behavior of the original client and is an excellent thing for the network in the long run.
The stupid choice of strapline means this product will always have this kind of comment whenever it's discussed. Rightly so, IMO. It's the 21st century and someone would have to be a fucking idiot to not realise that this strapline is going to cause comment.
People eventually have to communicate, and someone is going to take offense no matter what. I think it's reasonable to expect people to start somewhere away from the worst possible interpretation.
The intended meaning is that your parents are less technically capable than you are; which parent is specifically chosen is simply not relevant. Would you have preferred, "Not your Dad's bitcoin wallet?" This is not sexist, it is ageist.
The best way to get people to stop talking about political correctness is to be politically correct. Pragmatically speaking, it makes sense to make a good effort to not offend people in your writing, since it detracts from the core message.
At some point there exists a line where you stop caring if people on the other side of it are offended, because they are nothing but a loud, vocal minority looking for a reason to complain.
I think that making an "ism" out of this headline applies. I don't know about you, but I'm not about to make language grey and boring just because certain people choose to take offense at anything and everything.
It's not ageist. It merely implies technology get's better with time. I can say "Not my dad's computer" and the implication isn't that my dad sucked at computers, its that computers sucked when my dad first got one.
no it obviously implies your mom is using an outdated bitcoind because she is a woman and knows nothing about computers; your father isn't clueless about tech. Sexist!
Some similar expression is "not your dad's rock music", implying that your dad listens to rock music. In this case, the headline implies that your mom uses some kind of Bitcoin daemon, ergo she is a nerdy mom.
Check out this thread from two years ago where people argue that the opposite phrase is sexist. I guess they figure "not your daddy's VCS" is sexist because it excludes women from the set of individuals who might have a need for a VCS.
Your example is not the same because your phrasing carries the implicit assumption that the version control system has qualities that make it explicitly suited for use by a specific gender. The two HN headlines are each describing parents; a group who are stereotypically characterized as being out of sync with the latest and greatest trends and advances. The reader has to take the extra step to interpret the headline as a subtly sexist chide, because there is nothing sexist about VCS and there is nothing sexist about the implication that your mother or father uses an outdated version of VCS software.
The male/female "binary" doesn't make them opposite
Yes, you're the best kind of correct, but let's not get caught up in semantics, the binary you so aptly point out is exactly what I'm taking about, 0 is the opposite of 1, and mom is the opposite of dad.
and using one doesn't cancel out the sexism in the other, they just are sexist in different ways.
This is only true if the use of feminine and masculine descriptions when discussing tech is inherently sexist, otherwise I don't see what either headline has to do with sex. Take your logic a little bit further and you might as well label gendered pronouns as sexist since they imply the sex of the subject.
I can't even begin to parse what you're saying here.
Mom is not the opposite of dad, they are just paired ideas. This isn't semantics, this is plain simple reality. We sometimes think of them as binaries but they aren't actually so.
The opposite of a Mom is a not-Mom, a concept which can include Dad but can also include a woman who hasn't had children.
"This is only true if the use of feminine and masculine descriptions when discussing tech is inherently sexist"
I wasn't arguing about anything being inherently sexist, I was arguing that it was contextually sexist. If you don't understand that words have connotations, people's reactions to sexism will always seem mysterious and arbitrary to you.
"Take your logic a little bit further and you might as well label gendered pronouns as sexist since they imply the sex of the subject"
You obviously don't understand my logic and are arguing about something completely different.
I haven't been following Bitcoin very closely. This looks great, but I'm confused why the authors went to so much trouble to duplicate the existing daemon down to every last bug. It sounds like their architecture improves on the design of the original implementation quite a bit, which is awesome. But if they don't want to cause a fork in the Bitcoin community (by adding features, fixing bugs, etc.), what's the point of having a well written one over the poorly written one? Isn't the thing more or less a "locked" piece of software?
* I don't participate in the Bitcoin community, so I'm sorry in advance if this is an ignorant question! Congratulations to the authors - I think this is a pretty significant accomplishment regardless.
Bugs in the Bitcoin protocol cannot be fixed while remaining compatible; that's why they have to duplicate them. They're not trying to preserve implementation bugs.
A "fork" of the blockchain is devastating. If you are unaware you have forked from the main chain you risk double spend attacks on all of your transactions (and mined block rewards become worthless). Thus any implementation needs to follow the exact same rules (including "bugs") for determining which transactions are valid.
That doesn't mean every bug needs to be implemented. It's possible there are DOS or remote code execution bugs in one implementation but not another. Diversity between clients is a good thing. If such a bug is discovered in one client it won't take down the entire network (except currently the vast majority of full nodes use the original bitcoind implementation)
Various different architectures may have benefits too (e.x. I like how btcd is splitting the blockchain and wallet pieces into separate processes)
From a development standpoint, I appreciate it from the concept of a clean refactor implementing current bitcoind features (vs. layered on over time), seemingly well-written and commented code, and introducing a heterogeneity to the bitcoin daemon world - making it a bit more resilient (potentially) against future attacks against the infrastructure.
it is worth considering that bitcoind itself, as a single project, has created a nasty fork and may very well do so again in the future.
better code that is actually readable and commented means a lower likelihood of a bitcoin daemon forking against itself. it also means that it is quicker to maintain existing code and extend it to add new features.
Hmm. My Mom was a trained engineer. She's no longer with us, but if she'd lived long enough to select a Bitcoin wallet, I have no reason to believe she'd have picked a poor one...
(And yes, I get the irony that they probably picked this headline out of fear that "not your dad's..." was sexist.)
actually, we chose the title because it made us giggle a bit more than "your dad's". the phrase "not your mom's" is relatively common and normally applied to stuff like sandwiches, jeans, or some other somewhat-sexist object.
my mom coded cobol for harris bank for many moons :)
55 comments
[ 4.7 ms ] story [ 113 ms ] threadI salute the amount of effort that's gone into this though.
Consensus requires agreement, malicious attacks are orthogonal, unless you're hypothesizing a malicious party introducing an intentionally incompatible node and a significant fraction of users switching to it.
if i run one without the bug and accept a payment, you and millions with the bug will just say "meh. this one does not match. will just drop it" and my transaction goes out of the main block.
That is not true. Gavin Andressen supports alternate implementations. Take the following quote [1]:
"Diversity is a good thing. Diverse, inter-operating implementations of the Bitcoin protocol make the network more robust against software bugs, denial-of-service attacks, and vulnerabilities. There are several projects re-implementing Bitcoin; if you are a Java or Go or Python or C programmer who wants to see Bitcoin succeed, you should consider helping them out by reviewing, testing, or contributing patches."
He then goes on to list several alternatives, including btcd.
[1] https://bitcoinfoundation.org/blog/?p=204
On the flip side one could argue that diversification of implementations is key to the long-term success of Bitcoin. If, let's say, there is a serious issue with bitcoind that shows up somewhere down the road that causes a fork and it is the only implementation everyone is using, there will be a network-wide problem. If there are a number of implementations in the wild, the fork would be contained to a smaller subset of users, and managed accordingly.
Getting to this point of diversification safely is difficult, however, which is why I imagine some of the core devs might be against it. I remember Amir Taaki got a lot of flack when he came out with libbitcoin.
It's earlier though (next weekend).
The phrase is a common American form of wording. "Not your mother's romance"; "Not your father's oldsmobile"; and so on.
So in this example my mother does have a bitcoin wallet but this new wallet is a bobby-dazzler.
I need to pause before posting.
I think that making an "ism" out of this headline applies. I don't know about you, but I'm not about to make language grey and boring just because certain people choose to take offense at anything and everything.
Yes, I'm well aware this is hyperbole. Deal.
Having said that, the article would get more upvotes here if the headline mentioned it was written in Go. ;-)
https://news.ycombinator.com/item?id=3931048
In summary, any allusion to gender with regard to tech is inevitably interpreted as sexist by someone.
Take a different example, say you described Git as:
* a man's version control system
or let's say you described it as:
* a woman's version control system
The male/female "binary" doesn't make them opposite and using one doesn't cancel out the sexism in the other, they just are sexist in different ways.
A radical feminist programmer saying "Now THAT is a woman's version control system."
A brogrammer saying "Pshh. That's a woman's version control system."
The male/female "binary" doesn't make them opposite
Yes, you're the best kind of correct, but let's not get caught up in semantics, the binary you so aptly point out is exactly what I'm taking about, 0 is the opposite of 1, and mom is the opposite of dad.
and using one doesn't cancel out the sexism in the other, they just are sexist in different ways.
This is only true if the use of feminine and masculine descriptions when discussing tech is inherently sexist, otherwise I don't see what either headline has to do with sex. Take your logic a little bit further and you might as well label gendered pronouns as sexist since they imply the sex of the subject.
Mom is not the opposite of dad, they are just paired ideas. This isn't semantics, this is plain simple reality. We sometimes think of them as binaries but they aren't actually so.
The opposite of a Mom is a not-Mom, a concept which can include Dad but can also include a woman who hasn't had children.
"This is only true if the use of feminine and masculine descriptions when discussing tech is inherently sexist"
I wasn't arguing about anything being inherently sexist, I was arguing that it was contextually sexist. If you don't understand that words have connotations, people's reactions to sexism will always seem mysterious and arbitrary to you.
"Take your logic a little bit further and you might as well label gendered pronouns as sexist since they imply the sex of the subject"
You obviously don't understand my logic and are arguing about something completely different.
* I don't participate in the Bitcoin community, so I'm sorry in advance if this is an ignorant question! Congratulations to the authors - I think this is a pretty significant accomplishment regardless.
That doesn't mean every bug needs to be implemented. It's possible there are DOS or remote code execution bugs in one implementation but not another. Diversity between clients is a good thing. If such a bug is discovered in one client it won't take down the entire network (except currently the vast majority of full nodes use the original bitcoind implementation)
Various different architectures may have benefits too (e.x. I like how btcd is splitting the blockchain and wallet pieces into separate processes)
https://blog.conformal.com/btcd-a-bitcoind-alternative-writt...
* integrated test infrastructure
* no active memory management
* standard formatting
* platform independent code
* simpler parallelism
* virtually crash-proof
* built-in profiling and documentation facilities
From a development standpoint, I appreciate it from the concept of a clean refactor implementing current bitcoind features (vs. layered on over time), seemingly well-written and commented code, and introducing a heterogeneity to the bitcoin daemon world - making it a bit more resilient (potentially) against future attacks against the infrastructure.
better code that is actually readable and commented means a lower likelihood of a bitcoin daemon forking against itself. it also means that it is quicker to maintain existing code and extend it to add new features.
(And yes, I get the irony that they probably picked this headline out of fear that "not your dad's..." was sexist.)
my mom coded cobol for harris bank for many moons :)