6 ms·
Btcd: Not your mom's Bitcoin daemon
- nwh 13y agoAlternate implementations make me uncomfortable. The original client is not documented much at all, and there's very little room for error. I salute the amount of effort that's gone into this though.
- haakon 13y agoI had the same reaction, but it's pretty cool that the "official" bitcoind regression test suite works on this implementation.
- ErsatzVerkehr 13y agoBeing uncomfortable about alternate implementations makes me uncomfortable.
- nwh 13y agoIt'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.
- makomk 13y agoThe 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.
- nwh 13y agoExactly. 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.
- ErsatzVerkehr 13y agoObviously 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.
- betterunix 13y agoWhat 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.
- nullc 13y agoMalicious 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.
- VMG 13y agoBoth implementations should run in parallel, differences in behavior will show bugs in either implementation.
- gcb1 13y agoyou 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.
- VMG 13y agoSome 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.
- javert 13y ago> 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. [1] https://bitcoinfoundation.org/blog/?p=204 https://bitcoinfoundation.org/blog/?p=204
- nwh 13y agoAlright, it's at odds with the developers I've spoken to about it. GMaxwell cautions most developers when they attempt it, for example.
- jedunnigan 13y agoYea, 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.
- VMG 13y agoI 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.
- petercooper 13y agoNot my dad's either.
- smoyer 13y agoNeither of my parents have a bitcoin wallet.
- clamprecht 13y agoSounds like a great thing to do over thanksgiving! (or some other upcoming holiday, if you're not in the states)
- seabrookmx 13y agoWe have thanksgiving in Canada too! It's earlier though (next weekend).
- gaunab 13y agoYeah, as if there weren't any nerd moms. Stop the headline sexism already.
- neals 13y agoWhile your mom is not using this wallet, you cannot complain about sexism in this title.
- DanBC 13y agoThe 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.
- mkr-hn 13y agoPeople 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.
- conformal 13y agoi think it's a pretty good line - got all of you talking, didn't it? =)
- nitrogen 13y agoAre you also offended by the saying, "Not your father's NASA?"
- DanBC 13y agoI was wrong to be offended. It was a knee-jerk reaction. 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.
- bengotow 13y agoI 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.
- glomph 13y agoForks are a pretty big deal especially if they require action on behalf of all the people mining.
- wmf 13y agoBugs 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.
- tlrobinson 13y agoA "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)
- pudquick 13y agoThe original announcement page lists some of what they claim to be the advantages of the port to Go: https://blog.conformal.com/btcd-a-bitcoind-alternative-written-in-go/ 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.
- bachback 13y agovery cool stuff. Could some subcomponents be used for the JS implementation? (https://github.com/bitcoinjs/bitcoinjs-server https://github.com/bitcoinjs/bitcoinjs-server).
- jimwise 13y agoHmm. 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.)
- conformal 13y agoactually, 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 :)
- Tichy 13y agoStill, few moms are likely to be computer experts.
- petercooper 13y agoFew people are computer experts, period ;-)
- madsushi 13y agoI think we need a version of Bitcoin that is designed for my mom if widespread adoption is the goal.