Slashdot Mirror


Btcd - a Bitcoind Alternative Written In Go!

An anonymous reader writes "The folks at Conformal have announced btcd, an alternative full-node implementation to bitcoind, written in Go! They have released the first of their core packages, btcwire, available for download at GitHub. As a bitcoin user myself, I love the idea of a full alternative. It will only make bitcoin stronger and more independent. This will be great for the Go community, too!"

14 of 150 comments (clear)

  1. Re:This is good for Bitcoin by Joce640k · · Score: 5, Insightful

    Yep. What the world really needs right now is a new currency whose value fluctuates like a share price.

    (Because it's based on the same premise - that it's only worth what people are willing to pay for it).

    --
    No sig today...
  2. Go! or Go? by c0lo · · Score: 5, Informative

    TFS mixes the two: written in Go! and great for the Go community
    TFA says: it's Go not Go!

    --
    Questions raise, answers kill. Raise questions to stay alive.
  3. Re:This is good for Bitcoin by Anonymous Coward · · Score: 5, Insightful

    While technically true, have you seen any major currency fluctuate over >1000% within a month lately? Ignoring what actually happens in real life does not help your argument.

  4. Re:This is good for Bitcoin by Anonymous Coward · · Score: 4, Insightful

    That's funny. I see it as the value of a dollar fluctuates and bitcoin is constant. I guess it's all a matter of perspective. ;)

  5. Not just perspective by ebcdic · · Score: 4, Insightful

    What have you bought over the last year? How has their price varied in dollars and in bitcoins? No currency's value is constant, but some are a lot more constant than others.

  6. Re:This is good for Bitcoin by Joce640k · · Score: 4, Insightful

    The price of food can double in a single day and you think it's normal? Luckily your wages do the exact same thing, right?

    --
    No sig today...
  7. It's not a full node by Anonymous Coward · · Score: 5, Informative

    All they have released is a handler for the network protocol. This doesn't verify blocks, send transactions or anything else. Are the other parts closed source or do they just not exist?

    1. Re:It's not a full node by IamTheRealMike · · Score: 5, Informative

      A full node is a really, really large amount of work. I feel that lots of people don't realise this, get enthusiastic and think, "I love Bitcoin! I love Go! I'll write Bitcoin in Go" where for Go you can substitute basically any language that's fun or popular. Then they write the easy bits (like wire marshalling) and eventually the project dies around the time that it's time to implement the wallet or Bloom filtering or robust test suites. Possibly Conformal is different, we'll have to wait and see, but the feature set they advertised in their blog is very much what has been seen many times before. In particular there's no handling of the block chain, re-orgs, no wallet and they haven't got any infrastructure to test edge cases.

      One reason implementing Bitcoin properly is not fun is an entire class of bugs that doesn't exist in normal software - chain splitting bugs - which can be summed up as "Your software behaves how you thought it's supposed to work rather than how the original bitcoind actually does work". Bitcoin is highly unusual in that it implements group consensus - lots of nodes have to perform extremely complicated calculations and arrive at exactly the same result in lockstep, to a far far higher degree of accuracy than other network protocols. This means that you have to replicate the same set of bugs bitcoind has. Failure to do so can lead to opening up security holes via consensus failure which can in turn lead to double spending (and thus your users lose money!).

      Being compatible with the way bitcoind is written (bugs and all) may require you to break whatever abstractions you have introduced to make the code cleaner or more elegant or whatever reason you have for reimplementing Bitcoin. Here's a trivial example - signatures in Bitcoin have an additional byte that basically selects between one of a few different modes. It's actually one of three modes plus a flag. So a natural way to implement this is as an enum representing the three modes plus a boolean for the flag. But that won't work. There is a transaction in the block chain which has a sighash flag that doesn't fit any of the pre-defined values (it's zero) and because Satoshi's code uses bit testing it still works. But if you turn the flag into an enum, when you re-serialise the mode flags you'll re-serialise it wrong and arrive at an incorrect result. So you have to pass these flags around as integers and select via bit testing as well.

      Bitcoin is full of these kinds of weird edge cases. Eventually you come to realise that reimplementing it is dangerous and probably whatever benefits you thought it had, it probably doesn't. Some people believe there should be independent reimplementations anyway and I can understand and respect that, but doing it safely is an absolutely massive piece of work. You have to really, really, really believe in diversity to do it - the features of language-of-the-day aren't good enough to justify the effort.

  8. Re:This is good for Bitcoin by dbIII · · Score: 4, Insightful

    Which makes you a target for such scams :(
    Schools used to have subjects called things like "social studies", "civics" or something similar to try to give kids a rudimentary bullshit detector to protect against bent politicians, naturopaths and pyramid schemes. Whatever happened to those?

  9. Krayon Kash!! by erroneus · · Score: 4, Funny

    My 6 year old loves to doodle with his crayons. Lately, I've been having him draw money. So far, the good ones are really rare. So I figure they are probably worth a substantial amount of money. I'm going to start releasing them as currency soon. I'm also working out a deal with Paypal to accept them.

  10. Re:Better than fiat currencies by fuzzyfuzzyfungus · · Score: 5, Insightful

    Given the (currently tiny) market for goods buyable with bitcoins, their 'value' is heavily dependent on the health of the exchanges where you can cash out into some other currency.

    Incidentally, those exchanges appear to get hacked and/or DDsSed every couple of months...

    With the GPU, FPGA, and ASIC miners either online or coming-real-soon-now, bot-herding in order to outcompete honest nodes is a substantial computational challenge, CPU miners are just too pitiful; but it would seem that the real weakness to exploit is the (much softer) underbelly of conventional web infrastructure and the price swings that attacks on that part of the bitcoin economy can create.

    The trade between bitcoins and USD looks sort of like the buying and selling of stock, in a world where it's totally normal for the NYSE to be firebombed multiple times per year...

  11. Re:This is good for Bitcoin by ultranova · · Score: 4, Insightful

    Actually, in Greece, they use the Euro, so... Their money has not lost value...

    Which is one of the problems of euro, since it means that neither industry nor tourism get a boost from prices effectively falling. Euro will eventually collapse, of course, once enough countries have gone bankrupt that the rest can't carry it anymore, but it'll be too late for Greece.

    --

    Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

  12. I conclude the opposite by Anonymous Coward · · Score: 4, Interesting

    Your post is extremely interesting, but the mandatory conclusion I make from it is the exact opposite of yours. If the original code is so full of idiosyncracies and gotchas then it's an extreme liability to everyone who values Bitcoin, and quite likely contains backdoors or deliberate weaknesses that are hidden by the obscurity.

    There can be no more important task for the Bitcoin community I think than to specify all elements of the static protocol and dynamic behavior of all parts, and reimplement them in other languages, especially safe languages.

    Go is certainly a good candidate for this large body of work, safe, clean, and fast.

  13. Re:This is good for Bitcoin by pla · · Score: 4, Informative

    I can't pay my taxes in BTC

    You can't pay your (US) taxes in Euros, either. Does that say anything about the legitimacy of the Euro? Though in fairness, if you wanted to consider that particular example one of a failing currency, I'd have a hard time disagreeing. ;)


    As for overall confidence, there's a sucker born every minute, as long as there are suckers having confidence in it, it will remain, until such a time as it becomes so mind blowingly obvious that even the most idiotic supporter can't deny it.

    I literally cannot think of a better argument against fiat currency. "Here, suckers, work for 40 years to collect enough of these papers we prooooomise will still hold (30% of) their value when you retire, and when they don't, hey, at least you'll have <snicker> Social Security to fall back on". And for the record, it actually comes out to more like eight suckers born every minute (in the US alone). That doesn't necessarily make BTC any better - But as with my point about the Euro, any argument against something you dislike that applies equally well to something you like, doesn't really have much persuasive power.


    even with that "relatively stable" 90-120 range you're still talking about a 30% fluctuation, which is both unpredictable and dangerous for people who are trying to use it for normal currency stuff.

    Barnes & Noble has a market cap of 1.3B - Roughly the same as Bitcoin. It shot up, yesterday alone, by 30% (well, 26%, anyway). Most people, even its own investors, expect it to go the way of Borders within a year or two.

    Barnes & Noble stock, however, does not count as a currency. So take that as you will.


    In the long term it will deflate out of existence, I just hope that there are some criminal prosecutions for the folks that are boosting the currency for personal gain.

    I merely disagreed with you up to that statement. But that? Why? Why would you hope for criminal prosecutions over something you have gone so far to minimize as little more than a fad? Do you wish the same for collectors of Beanie Babies and Hummels, or do you reserve your bitterness for collectors of failed foreign currencies?