Slashdot Mirror


A Source Code Typo Allowed An Attacker To Steal $592,000 In Cryptocurrency (bleepingcomputer.com)

An anonymous reader writes: "A typo in the Zerocoin source code allowed an attacker to steal 370,000 Zerocoin, which is about $592,000 at today's price," reports BleepingComputer. According to the Zcoin team, one extra character left inside Zerocoin's source code was the cause of the bug. The hacker exploited the bugs for weeks, by initiating a transaction and receiving the money many times over.

"According to the Zcoin team, the attacker (or attackers) was very sophisticated and took great care to hide his tracks," reports the site. "They say the attacker created numerous accounts at Zerocoin exchanges and spread transactions across several weeks so that traders wouldn't notice the uneven transactions volume... The Zcoin team says they worked with various exchanges to attempt and identify the attacker but to no avail. Out of the 370,000 Zerocoin he stole, the attacker has already sold 350,000. The Zcoin team estimates the attacker made a net profit of 410 Bitcoin ($437,000)."

88 comments

  1. Obviously by Anonymous Coward · · Score: 0

    We need YANPL (yet another new programming language) that won't allow typos and mistyped characters to cause problems. Really, hanging yourself with a typo is as bad as hanging yourself with a NULL pointer. More hand-holding, I say!

    1. Re:Obviously by infolation · · Score: 2

      That is absolutely correct, and there was a very good article in The Economist relating to the removal of $55 million from 'The Dao' which made the same legal argument that exploiting poor programming in a Smart Contract was not theft but simply following the rules of a system, even if those rules did not do what the creators intended.

      In addition The Economist argued that that whereas the heist was not a crime, altering digital ledgers to retrieve the lost ether was affront to the whole project.

    2. Re: Obviously by Anonymous Coward · · Score: 0

      If typos can't cause problems then typing can't cause problems then programming can't cause problems. You want a language where the code you write is always correct. It's not possible.
      Tests help ;)

    3. Re:Obviously by Big+Hairy+Ian · · Score: 1

      I call publicity stunt

      --

      Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.

    4. Re:Obviously by Anonymous Coward · · Score: 0

      1849. you twits never learn.

    5. Re: Obviously by Wootery · · Score: 1

      Does this prove that programming language design has no impact on software quality? No? Then I don't care.

      Of course there will always be some non-zero number of bugs in mainstream software. That doesn't mean we can't improve things.

  2. Show me the code. by Anonymous Coward · · Score: 0

    Bullshit. A one character bug? Really? What about the tests? This sounds like spin on "We got hacked and lost your money"

    1. Re:Show me the code. by Anonymous Coward · · Score: 0

      Many severe bugs can be caused by a single character being off. You sounds like a tech layman who has never written a line of code in his life.

    2. Re: Show me the code. by Anonymous Coward · · Score: 0

      https://github.com/zcoinofficial/zcoin

    3. Re: Show me the code. by harperska · · Score: 2

      If that is the right repository, then this is the relevant pull request: https://github.com/zcoinoffici...

      It is a one line change from two days ago. Apparently the typo was initializing a variable to 1 instead of 0.

    4. Re:Show me the code. by petermgreen · · Score: 1

      A one character bug? Really?

      "one character typo" can cover a wide range of things. Using = instead of == is probablly the most famous but also generally one of the easiest to spot (modern compilers usually have a warning for it). Using the wrong variable is a big one (not helped by the fact that mathematicians love one-character variable names). Using the wrong logical or comparision operator can be another.

      Unfortunately TFA doesn't say what the "one character typo" was and looking at their github I don't see any one character typos being fixed recently. I do however see a "two character" typo being fixed though ("||" vs "&&"). I also see some == being change to >= but I *think* that is just a case of making a test more paranoid.

      https://github.com/zcoinoffici...

      What about the tests?

      It takes extreme discipline to carefully create test cases that cover every failure case. All too often people only test that the normal case works as it should and fail to test the error handling.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    5. Re: Show me the code. by allo · · Score: 1

      This doesn't look like a typo. And without digging deeper, even the variable name doesn't look like it would be unclear to what it should be initialized. Maybe somebody from the team was involved ...

  3. he didnt "steal" anything by Anonymous Coward · · Score: 0

    he simply allowed the code to run; dont want this to happen? dont write crap code.

    1. Re: he didnt "steal" anything by Anonymous Coward · · Score: 0

      The "bank robber" didn't steal anything, he simply allowed bank employees to hand over bags of cash by exploiting a loophole in the normal transaction flow (pointing a gun instead of a withdrawal slip)

      The video pirate didn't steal anything, he just used the internet to make copies (it's not like anyone lost their copy)

      The home invader probably didn't do anything illegal. If you wanted him kept out of your house you wouldn't have built a front door.

    2. Re: he didnt "steal" anything by Anonymous Coward · · Score: 0

      All your idiotic examples have written rules that you can't do these things, making them still illegal.

    3. Re: he didnt "steal" anything by Anonymous Coward · · Score: 1

      Your last two examples actually aren't stealing. Don't believe me? Ask a judge.

    4. Re: he didnt "steal" anything by Anonymous Coward · · Score: 0

      Your idiotic response demonstrates your lack of awareness of the state of computer law.

    5. Re: he didnt "steal" anything by Anonymous Coward · · Score: 0

      And he'll say you're an idiot. Sure, a home invader doesn't mean theft, so you're OK there.

      But pirating is not about stealing physical copies, it's about taking the sole right to produce copies away from the rights holder. You took away their ability to be the ONLY ones to copy said data. So stop thinking you're being smart about being ignorant. It's fucking stealing.

    6. Re: he didnt "steal" anything by Anonymous Coward · · Score: 0

      no one cares what you think. you think it's stealing? good for you. now as far as the laws being broken - music pirates are not being prosecuted for theft. now say more things please - I love it when autistic socially inept people like yourself create weird fake logic trains from their basement. it makes us normal people enjoy ourselves more. you know the people who shoved you into lockers in highschool? that was me.

  4. Steal? by beernutmark · · Score: 3, Insightful

    I don't think steal is the right word in this context. The article doesn't state that anyone else lost their coins. More accurately would be "created", "unauthorized-mining", or perhaps most accurately "counterfeited"

    1. Re:Steal? by Anonymous Coward · · Score: 4, Insightful

      Indeed, he profited from a loophole in the system, and it's unclear whether this was illegal. The question of legality probably depends on the terms of service for Zerocoin, and on the laws of the country where the "attacker" resides.

      But in human societies, when a lone wolf exploits a loophole, the lone wolf's behavior is usually unacceptable. When a group of individuals who possess social status exploit the loophole, their behavior is often acceptable. Isolated individuals with low social status have very few advantages in society. And when they figure out how to gain an advantage, society goes on the offensive against them.

    2. Re:Steal? by haruchai · · Score: 1

      Indeed, he profited from a loophole in the system, and it's unclear whether this was illegal. The question of legality probably depends on the terms of service for Zerocoin, and on the laws of the country where the "attacker" resides.

      But in human societies, when a lone wolf exploits a loophole, the lone wolf's behavior is usually unacceptable. When a group of individuals who possess social status exploit the loophole, their behavior is often acceptable. Isolated individuals with low social status have very few advantages in society. And when they figure out how to gain an advantage, society goes on the offensive against them.

      I think we need an AC Insightful mod

      --
      Pain is merely failure leaving the body
    3. Re:Steal? by Impy+the+Impiuos+Imp · · Score: 1

      Unacceptable but not illegal means society must pass a new law.

      Demagogues leading The People on lawless rages against Lone Wolves and small groups is a much bigger problem.

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
  5. Move along, please, nothing to see here... by 140Mandak262Jamuna · · Score: 4, Interesting
    They are not disclosing what that extra character was or even which language the code was written. As a coder I was interested in finding how it could have happened. But as it stands, it is a puff piece.

    One char can make big different in performance and correctness. The greatest one character code change I made and got stunning performance improvement was adding an &. It took significant effort to find it, because instrumenting the entire executable for profilers was just out of the question. But once found it was trivial. The caller was passing a std::map by value. The answers were correct and the scaling effects were not visible till the map grew to big sizes. I expected to something along these lines.

    --
    sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
    1. Re:Move along, please, nothing to see here... by snurfer · · Score: 4, Informative

      It's pretty easy to find: https://github.com/zcoinofficial/zcoin/commit/b20c177032de3c4bfae62b5ada768a5dc2b4fa67

      I'm gonna call all my off-by-one errors "typographical errors" from now on.

    2. Re:Move along, please, nothing to see here... by rebelwarlock · · Score: 1

      That isn't the bug described. Having a 1 instead of a 0 does not constitute an extra character - that's just the wrong character.

  6. Bug Bounty by Registered+Coward+v2 · · Score: 4, Insightful

    Seems like he collected an ~500k$ bug bounty. The interesting part is "Zero Coin is a project to fix a major weakness in Bitcoin: the lack of privacy guarantees we take for granted in using credit cards and cash. Our goal is to build a cryptocurrency where your neighbors, friends and enemies can’t see what you bought or for how much" per Zero Coin. It seems they succeeded in their goal and were hoist by their own petard. Of course, had they recovered the funds then ZeroCoin would have failed at its purpose. I wonder who took the loss.

    --
    I'm a consultant - I convert gibberish into cash-flow.
    1. Re: Bug Bounty by Anonymous Coward · · Score: 0

      No one, because cryptocurrency is all made up. Here, have eleven billion Slashdot nickels.

      Htjcry5558?fib5grjbdr474gdu683gg

      Don't go spend it all at once!

    2. Re:Bug Bounty by Anonymous Coward · · Score: 3, Insightful

      Why did the Zcoin team even attempt to identify the attacker? Surely they realize that if they succeed, then no one will believe their claim about strong privacy guarantees and anonymity. This could harm their cryptocurrency by more than 592k$. Catch-22.

    3. Re:Bug Bounty by haruchai · · Score: 1

      Why did the Zcoin team even attempt to identify the attacker? Surely they realize that if they succeed, then no one will believe their claim about strong privacy guarantees and anonymity. This could harm their cryptocurrency by more than 592k$. Catch-22.

      Wow, the ACs are in rare form today

      --
      Pain is merely failure leaving the body
    4. Re: Bug Bounty by Anonymous Coward · · Score: 0

      It's not more "made up" than traditional FIAT currency. And it's not true that nobody loses. The currency has a market value. If the total volume of "coins" is increased, you get currency depreciation. The price of the currency goes down and everyone looses, which is theft.

    5. Re:Bug Bounty by Jeremi · · Score: 1

      It seems they succeeded in their goal and were hoist by their own petard. Of course, had they recovered the funds then ZeroCoin would have failed at its purpose. I wonder who took the loss.

      My intuition was that it would have the same effect as any other currency counterfeiting operation has on the "genuine" currency: i.e. all holders of ZeroCoins took the loss, in the form of a certain amount of extra inflation caused by the increase in "supply", which reduced the values of their ZeroCoin holdings. Possibly also they might take a further loss if people start to lose faith in ZeroCoins and start selling them (or stop buying them), causing their value to decrease some more.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    6. Re: Bug Bounty by Anonymous Coward · · Score: 0

      Fiat currency is backed by force. That is one difference.

    7. Re: Bug Bounty by DontBeAMoran · · Score: 1

      A force so powerful that the hyperinflation in Zimbabwe reduced it to one of the lowest valued currency units in the world, with denominations up to a $100 trillion banknote.

      --
      #DeleteFacebook
    8. Re:Bug Bounty by Anonymous Coward · · Score: 1

      Are you coming on to me? One penis into your butt, coming right up!

  7. attacker has already sold 350,000 by frovingslosh · · Score: 3, Insightful

    the attacker has already sold 350,000

    By which we mean he has already moved it into other accounts that he likely controls.

    --
    I'm an American. I love this country and the freedoms that we used to have.
    1. Re: attacker has already sold 350,000 by Anonymous Coward · · Score: 1

      No, sold for BTC on poloniex

  8. == vs =, | vs ||, variable/pointer dereference by raymorris · · Score: 5, Insightful

    > A one character bug? Really?

    Sure, I've seen many single-character bugs, and created a few. I imagine MOST experienced programmers have done this at least once:

    if (a = b) {

    When they meant:
    if (a == b) {

    Every language I can think of has a common single-character bug. Many Microsoft SQL users routinely leave off the semicolon which terminates a statement. Sometimes that results in buggy behavior right away, sometimes not until two years later when a change is made to the *proceeding* statement.

    > What about the tests?

    This is crypto-currency, the hot new thing tests are for old fogeys who still use dollars. Get with the times, young programmers are Agile, they don't plan and test their work, they release early and often. They release the Minimum Viable Product (minimum piece of shit they can get away with for a moment), it's illegal now to even think about corner cases and make code robust.

    1. Re:== vs =, | vs ||, variable/pointer dereference by haruchai · · Score: 3, Funny

      when a change is made to the *proceeding* statement

      Did you mean "prEceeding"? If you, that's another 1 character bug you've created :-D

      --
      Pain is merely failure leaving the body
    2. Re:== vs =, | vs ||, variable/pointer dereference by TeknoHog · · Score: 2

      Well, "proceeding" vs. "preceding" is really a 2-character bug. Although I wouldn't know for sure as I'm not a native English speaker.

      --
      Escher was the first MC and Giger invented the HR department.
    3. Re:== vs =, | vs ||, variable/pointer dereference by Anonymous Coward · · Score: 0

      Or the famous
        if (a > 0) {
      vs
        if (a >= 0) {
      one character bug

    4. Re:== vs =, | vs ||, variable/pointer dereference by Kjella · · Score: 1

      if (a = b) {

      When they meant:
      if (a == b) {

      Which is the one thing Visual Basic got right IMHO, use := for assignment and == for comparison. The C form is plain wrong when you consider that "=" is the equal sign, to anyone who doesn't know C-isms the first reads "If a equals b then". Same way stealing kilobyte = 1024 bytes was a bad idea, the only excuse you really hear is that we've done it so long it seems natural. Like clicking the start button to shut down the machine, except we're still doing it.

      --
      Live today, because you never know what tomorrow brings
    5. Re:== vs =, | vs ||, variable/pointer dereference by angel'o'sphere · · Score: 1

      they don't plan and test their work,
      All agile methods emphasize testing. All emphasize to have well educated people, which means they have a plan in thier mind and don't need to sketch plans on the board first.
      So, you probably never have worked in an agile team ...
      Facepalm

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    6. Re:== vs =, | vs ||, variable/pointer dereference by jdavidb · · Score: 1

      What about the tests?

      This is crypto-currency, the hot new thing tests are for old fogeys who still use dollars. Get with the times, young programmers are Agile, they don't plan and test their work, they release early and often. They release the Minimum Viable Product (minimum piece of shit they can get away with for a moment), it's illegal now to even think about corner cases and make code robust.

      I don't know about ZCash, but Bitcoin has an extensive regression test suite and test mode. And test-first development is a principle of agile, so I'm not sure why you concluded agile programmers don't test.

    7. Re:== vs =, | vs ||, variable/pointer dereference by Impy+the+Impiuos+Imp · · Score: 1

      I would describe something like this more as a single math or logic bug.

      A single character bug I first think of a misspelled variable name in C creating a new int variable, with no lint type switches on (or nobody paying attention at the spit out warning durng compilation as hundreds of thousands of lines fly by.)

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
    8. Re: == vs =, | vs ||, variable/pointer dereference by Anonymous Coward · · Score: 0

      You can avoid this sonewhat by writing the resulting comparison on the reft instead of right side.

      E.g. = variable as oppised to variable = .

      You you meant to write ==, then the compiler complains in the former case , but not the latter.

      Doesn't help with v1 = v2 however.

      Mind you... I write code for the dumb monkey to maintain, so I generally avoid any language cobstructs like chained = and repeat , syntax (C/C++) becuase that makes people assume what is happening...since everyone generally thinks thay are smarter than they really are.

    9. Re:== vs =, | vs ||, variable/pointer dereference by Hognoxious · · Score: 1

      Which is the one thing Visual Basic got right IMHO, use := for assignment and == for comparison.

      Think of all the time lost typing those superfluous colons!

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    10. Re:== vs =, | vs ||, variable/pointer dereference by mridoni · · Score: 1

      if (a = b) {

      When they meant:
      if (a == b) {

      Which is the one thing Visual Basic got right IMHO, use := for assignment and == for comparison..

      Except it didn't, VB6 and VB.Net use "=" both for comparison and assignment, Pascal and PL/SQL, among others, use the ":=" operator for assignment.

    11. Re:== vs =, | vs ||, variable/pointer dereference by 0111+1110 · · Score: 1

      to anyone who doesn't know C-isms

      Non-programmers you mean? Seriously what kind of programmer doesn't expect a single '=' to be an assignment operator? C/C++ isn't the only language where that is the case. I have never made the error you mention even once in my entire life. In c/c++ == is the comparison operator and = is the assignment operator. I don't see how that is unclear.

      --
      Quite an experience to live in fear, isn't it? That's what it is to be a slave.
    12. Re:== vs =, | vs ||, variable/pointer dereference by Anonymous Coward · · Score: 0

      What about leaving off the not (!) operator, interchanging set intersection with union, using less than instead of greater than, putting an extra 0 in an integer constant, etc.

      Those could all be one-character "typos". You gonna prevent all of them? Welcome to "Are you sure?" prompts.

    13. Re:== vs =, | vs ||, variable/pointer dereference by Anonymous Coward · · Score: 0

      I'm not a native C programmer, and that excuse wouldn't hold much water at my job.

    14. Re:== vs =, | vs ||, variable/pointer dereference by Anonymous Coward · · Score: 0

      Unless your life is short this is difficult to believe. Typos happen. It's not that the programmer forgot what = means, it's that they accidentally failed to hit the equals sign twice and didn't notice at first.

      The good news is that this is relatively easy to detect via static analysis, provided you adhere to the rule that assignment in an if statement is forbidden.

    15. Re:== vs =, | vs ||, variable/pointer dereference by petermgreen · · Score: 1

      Seriously what kind of programmer doesn't expect a single '=' to be an assignment operator?

      A pascal, basic or matlab programmer.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    16. Re:== vs =, | vs ||, variable/pointer dereference by slashrio · · Score: 1

      If he

      --
      "Trump!!", the new Godwin.
    17. Re:== vs =, | vs ||, variable/pointer dereference by petermgreen · · Score: 1

      edit sorry it seems I was wrong about matlab, apparently it does use the C convention. Shows how having to deal with too frigging many languages can leave one confused.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    18. Re:== vs =, | vs ||, variable/pointer dereference by GameboyRMH · · Score: 1

      Every language I can think of has a common single-character bug. Many Microsoft SQL users routinely leave off the semicolon which terminates a statement. Sometimes that results in buggy behavior right away, sometimes not until two years later when a change is made to the *proceeding* statement.

      I once accidentally put a semicolon after an "if" statement in PHP. The website ran fine for years until one day when there were no articles for the little box this code was behind. That day the whole website ate shit. At least it was an easy fix!

      --
      "When information is power, privacy is freedom" - Jah-Wren Ryel
    19. Re:== vs =, | vs ||, variable/pointer dereference by Anonymous Coward · · Score: 0

      When I see an article like this I have to ask... Source?

      A single extra character typo is often somewhat difficult in C. I would suspect more likely a scripting language potentially without strict mode.

      Still an extra digit/character on a literal or preceding 0 changing the base, extra semicolon,

      My bets are on the dreaded semicolon after a control statement unless the extra character thing is wrong.

    20. Re:== vs =, | vs ||, variable/pointer dereference by haruchai · · Score: 1

      If so

      --
      Pain is merely failure leaving the body
    21. Re:== vs =, | vs ||, variable/pointer dereference by Anonymous Coward · · Score: 0

      Did you mean "prEceeding"? If you, that's another 1 character bug you've created :-D

      Shouldn't that be "If you DO, that's another..."

    22. Re: == vs =, | vs ||, variable/pointer dereference by Anonymous Coward · · Score: 0

      I think the distinction is the "planned" test plan. I've gone the route of pre-planned testing and on the fly testing. Pre-planning is especially important if you need debug harnesses or test jig. (Try buying a $10k temperature chamber next day. )
      Other things just need to be tried and experienced, like using large and small monitors for screen optimization issues.

      Someone very smart use to say, "if you fail to plan, you plan to fail." so true. You need a mix of Pre-planning and on the fly testing for the best test coverage.

    23. Re: == vs =, | vs ||, variable/pointer dereference by jdavidb · · Score: 1

      Are you saying that the Bitcoin test suite is somehow not planned? I'm not quite sure I understand how that makes sense.

    24. Re:== vs =, | vs ||, variable/pointer dereference by Wootery · · Score: 1
    25. Re:== vs =, | vs ||, variable/pointer dereference by michael_wojcik · · Score: 2

      Pascal got the := operator from ALGOL.

      Aside from some contemporary proprietary dialects, COBOL doesn't use = for assignment either; you use the MOVE or SET verb, or an assignment clause such as GIVING with verbs that have such clauses.

      LISP and descendants have SET, SETQ, and SETF for assignment per se, and possibly others (e.g. Scheme's set!), plus the binding forms LET and LETREC (and possibly others).

      APL uses left-arrow for assignment, obviously.

      Forth uses !.

      Don't they teach programming language history these days?

  9. Correction by BarbaraHudson · · Score: 1

    The story says " allowed an attacker to steal 370,000 Zerocoin, which is about $592,000 at today's price". I seriously doubt 370,000 Zerocoins is worth anywhere near $592k now that the news is out and trading has been suspended. If you can't spend it, it's worth is zero, which kind of makes sense for something named Zerocoin. The name should have been warning enough.

    --
    "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    1. Re:Correction by haruchai · · Score: 1

      Price chart is here.
      Judging by the drop since late October, when they were at $5.50 USD, they have other problems.
      Guess we'll find out next week what's the impact of this theft.

      --
      Pain is merely failure leaving the body
    2. Re:Correction by BarbaraHudson · · Score: 2

      You'll notice that as the fake demand went up, so did the price. Nice scam.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
  10. zerocoin? What is that? by phantomfive · · Score: 1

    An obscure, second-rate digital coin can be worth that much money? There is a bubble in the cryptocoin market. I wonder what happened to Dogecoin.

    --
    "First they came for the slanderers and i said nothing."
    1. Re:zerocoin? What is that? by DontBeAMoran · · Score: 1

      Dogecoin has been "relatively stable" for about a year.

      --
      #DeleteFacebook
    2. Re:zerocoin? What is that? by phantomfive · · Score: 1

      At a price of roughly zero?

      --
      "First they came for the slanderers and i said nothing."
    3. Re:zerocoin? What is that? by petermgreen · · Score: 1

      The absoloute value of one "coin" is not a useful comparision. It doesn't really matter whether you have lots of "coins" with a low value per coin or fewer with a higher value per coin.

      More interesting as a measure of the relative importance of cryptocurrencies is the "market cap". The value per coin times the number of coins in circulation.

      By that measure dogecoin's significance is about 0.1% of bitcoin's

      http://coinmarketcap.com/

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
  11. good news by Anonymous Coward · · Score: 0

    this is great, that's how the freemarket works !!!

  12. Let me guess by dschiptsov · · Score: 1

    The bug has been found with a modern diagnostic tool, such as clang-5.0 with all the warnings and sanity checks enabled. Anyway, this is really cool story.

  13. The following statement, the next statement by raymorris · · Score: 2

    I mean the following statement. This works okay:

    SELECT 1
    SELECT 2;

    This doesn't:
    SELECT 1
    THROW

    The latter is equivalent to:
    SELECT 1 AS THROW

    I had originally written "the preceding or proceeding statement". That's reasonably clear, I think, though it stretches the definition of "proceeding". Then I realized that changes to the PRECEDING statement won't affect anything, so long as if that preceding statement is properly terminated with a semicolon. So I ended up with "the proceeding statement", which is poor wording.

  14. Banks love these stories by Anonymous Coward · · Score: 0

    Most crypto currencied are worth more than regular and the U.S. Dollar hates this because banks have no control. So, expect more stories to show up in the next week or so as an attempt to weaken the crypto dollar.

  15. A whole $592k? by Glasswire · · Score: 1

    Wow. I'm surprised the total value of all Zerocoin is worth that much in $USD

  16. Re:Language vs. Implementation by hackwrench · · Score: 1

    No, we just need IDE's and complilers for current ones that enforce certain constraints.

  17. I thought you knew. Scrum by the book 1-2 weeks by raymorris · · Score: 1

    My (mod funny) comment was a bit of a caricature of Agile, of course. Still, I'm surprised you said what you did, rather than chuckling. I thought you'd been doing professional development for a number of years. Perhaps I'm remembering wrong.

    Agile emphasizes *automating* testing. Automated testing is a good thing. It sometimes catches regressions and fatal errors that completely break the build entirely. That saves your alpha and beta testers from dealing with some of the easy, dumb mistakes.

    Scrum by the book says sprints should be 1 week preferably, up to 2 weeks, and you should have a release (or a minimum a releasable product at the end of each sprint (each week). If you're going to plan it and build it in a week, that doesn't leave more than a few hours for QA. Traditionally high quality software spends a few weeks in alpha testing and a few weeks in beta testing before it moves to limited release. If you follow Scrum as originally written, release comes at the sprint - alpha testing is done after release, by customers in production. That's advantageous in that customers get the cutting edge new features right away, and it also means they are getting alpha-grade software. Much like the difference between Fedora and Red Hat Enterprise Linux. Many people like Fedora, which is cutting edge, on their desktops. Virtually nobody wants that on their production servers, they want the reliability of Red Hat or CentOS Enterprise, which has been tested for at least 18 months. Fedora is basically the beta test for RHEL, and that beta test takes 18 months, not 18 hours.

    I would also think you'd know that an essential, fundamental concept behind Agile is that we don't know what the future holds, requirements change -- so long-term planning is basically pointless. That makes perfect sense - to everybody who hasn't yet been taught how to determine what the *real* requirements actually are. Certainly sitting in a meeting the users' boss's boss doesn't tell you what the users' actual needs are, but there are methods to determine the real needs, and plan for them even years in advance. Agile rejects that notion, though for those who have been shown how to do it, it's a proven fact that you *can* learn the requirements, and the likely future requirements. You just have to be taught how to do so.

    1. Re:I thought you knew. Scrum by the book 1-2 weeks by Anonymous Coward · · Score: 0

      If you're going to plan it and build it in a week, that doesn't leave more than a few hours for QA.

      That's because you shouldn't be treating QA as a separate thing tacked onto the end of a project, but something ingrained across the whole process. When you have QA as a separate thing at the end, then any kind of delay results in huge pressure to skip or reduce QA. Agile has the concept of "done done", where the programmer is more responsible for making sure that something works before saying it's finished.

      Traditionally high quality software spends a few weeks in alpha testing and a few weeks in beta testing before it moves to limited release.

      It seems to me you're judging agile while making assumptions that certain things will be true for agile as they are true for more traditional development models. This isn't the case. If you're finding things wrong during QA at the end of an agile sprint, there's something seriously wrong with your process because that shouldn't be happening. Traditional high quality software needs all that testing at the end because it doesn't have that focus on quality throughout.

  18. I dunno ... by Anonymous Coward · · Score: 0

    I'm William Scott Lockwood III, long time fart advocate and investor.
    Today I'm at the Slashdot world headquarters in San Diego, CA.
    I had a nice chat with Slashdot CEO,Carp Flounderson, about their current situation.
    He showed me multiple server logs, as well as letters from providers and lawyers.
    I'm sure that all the current poogas problems at Slashdot are being caused by the traditional Slashcode system, not because of a lack of farts at Slashdot.
    The traditional Slashcode system that Slashdot needs to work with are not able to keep up with the demands of the growing Lockwood fan club.
    The dozens of people that make up the Slashdot team are hard at work establishing additional farting partners, that eventually will make dealing with Slashdot easier for all their trolltalk members around the world. For now, I hope that everyone will continue working on Slashcode projects that will help make the world a better place.

    -William Scott Lockwood III, esq

  19. Why is this described as a theft? by BozoForPresident · · Score: 1

    Who is the victim? Surely the crime, if any, is that Zcoins were forged by exploiting this bug...

  20. Every holder of Zerocoin is the victim by Anonymous Coward · · Score: 0

    It's strange to see so many people asking "Who is the victim?" That's the nature of counterfeiting (or, really, minting new units of account): Everyone who holds an existing unit of account is paying for the creation of those new units; the people who use this unit of account to conduct their business are transferring purchasing power to the entity that is creating the new units, and if there was no agreement that such transfer of purchasing power should be allowed to take place, then that transfer is indeed theft.

  21. Inside job? by Anonymous Coward · · Score: 0

    I smell an inside job

  22. Two options by raymorris · · Score: 1

    > If you're finding things wrong during QA at the end of an agile sprint, there's something seriously wrong

    Suppose QA is blended into your four and a half days of planning, research, development, and testing. Somehow (magic?) you're testing the changes you've not yet finished against everyone else's unfinished changes. Obviously you're not testing how your changes work with the other guy's changes before you've decided how to write either change. So that gives you max maybe 7 hours integration testing and validation, spread throughout the last two days of the week. Do you *really* think a a couple hours of each (at the most) can replace several weeks of each? Really? If so, maybe you're the reason we catalog 100 vulnerabilities in other people's software *per day*.

    With Scrum and Agile generally you have two options:

    A) Knowingly trade faster development at the cost of quality assurance.

    B) Unknowingly trade faster development at the cost of quality assurance.

    Those are the choices. Do you have any idea what "release early" means? It means release before it's thoroughly tested, in the case of Scrum specifically, it generally means nobody has ever tested it at all - nobody other than (maybe) the developer has tried out the feature to see if it works correctly, and integrates correctly with everything else. Paying customers do alpha testing. (And no, automated unit tests (while useful) in no way replace beta testing, alpha testing, and validation. So you get speedy development but at a cost. Again your two choices are:

    A) Knowingly trade faster development at the cost of quality assurance.

    B) Unknowingly trade faster development at the cost of quality assurance.

    You can either know what you're giving up, or not know. But nothing is free, there is a definite cost. If you think thorough testing is for chumps, perhaps you're the guy who wrote "goto fail".

    1. Re:Two options by angel'o'sphere · · Score: 1

      Answering to both poste.

      Scrum 'by the book' suggests 6 week long sprints.
      Most teams do 2 or 3 weeks. One week makes only in the rarest cases sense.

      In a Scrum project you test inside of the sprint. But we don't have alpha and beta testing.
      While a sprint result should be shipable, it is not necessarily shipped. E.g. a big online game with half yearly updates might still be developped with a few sprints and then testd and bug fixed.

      Most projects I was involved in are done with Scrum. We allways had a completely tested Sprint result, each sprint. Usually the result was accepted in the sprint review, due to a manual demonstration. Often there where testers who tested after the feature was done: during the sprint.

      A sprint can not be declared finished unless, a feature is DONE. How you define done is up to the team and the organization.

      Some might define done without thouroughful testing ...

      My teams don't.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  23. Wisdom follows, pay attention. by Anonymous Coward · · Score: 0

    > "A typo in the Zerocoin source code allowed an attacker to steal 370,000 Zerocoin, which is about $592,000 at today's price,"

    Blah-blah, insider bob, blah-blah... This fairy-tale telling happens all the time, but they will go to prison eventually.

    (I really root for the late 19th century Europe, where people found embezzling and counterfeiting bills of exchange simply had to shoot themselves, because they were so utterly destroyed socially that the shame would ruin their entire family, unless they acted gentlemanly. The good old morals effectively deterred people from all kinds of swindles.)

  24. Re: I thought you knew. Scrum by the book 1-2 week by Anonymous Coward · · Score: 0

    If you're not ALWAYS finding bugs in QA, you're doing it wrong.

    The trick is finding and fixing the showstopper bugs so it works out of the box and fix the edge case bugs after.

    The process that worked well for me and a developer was to discuss what problem the customer would have now, and what we think would resolve their issue. Very little design was dictated to the developer, mostly just in intended operation.

    If he said a feature will take 3 weeks, it would break down like:

    - first test build given to me after two weeks.
    - bugs and issues reported directly to dev for discussion
    - cosmetic bugs reported right away (he was Chinese that was pretty good but could use improvement here and there)

    I'd get a build the next day or so with all cosmetic fixes and continue with functional testing to make sure it worked.

    After making sure it works, then we make sure it's dummy proof and you can't brick it. Error handling added and sane choices made (ie, bail or continue on unexpected input).

    Most QA time was significantly reduced by having experienced, competent developers who know how to sanitize inputs, clean up memory usage, and remember it's an embedded device with limited resources.

    QA effort is directly related to quality and experience of your developers.

  25. Re:Language vs. Implementation by Wootery · · Score: 1

    If we're feeling obtuse: that kinda is yet another new programming langauge... it's just one which happens to be a strict subset of an existing one.

  26. PVS-Studio by Andrey_Karpov · · Score: 1

    Some developers say that typos are not dangerous and PVS-Studio is not needed. This great tool for typos search: https://www.viva64.com/en/exam... Now I have the argument. :)