You are reading a single comment by @cyclotron3k and its replies. Click here to read the full conversation.
  • The basics go something like this.

    It all started out many years ago with a suggested way of stopping spam.

    Imagine you could produce a digital "thing" that was difficult to calculate or otherwise come up with but trivial/cheap to verify.

    The idea would be that for every email you wanted to send you could accompany that email with a special token, unique to that email/sender/destination that took a bunch of compute time to come up with, say 30 seconds, but could be verified/confirmed all but instantly.

    One poor anology is factoring a number. If I give you the number 1111111 it's a lot more work to find out this is the product of the primes 239 and 4649 than it is to verify that given that information. This asymmetry is a fundamental basis of many IT things (from encryption/HTTPS/etc all the way to things like Bitcoin).

    Imagine there is a magic function that takes lots of input data and creates a big number out the end. One little change in the input and the output number changes completely. It's very hard (but not impossible) to take the output number and come up with an input - this is the asymmetry. One useful example of this is a hash function. It takes any input data and outputs a known sized output number.

    One example of this is the md5 hash. Using this I can give it an input string, e.g. aaaaa and get the output 4c850c5b3b2756e67a91bad8e046ddac. That's a 128-bit output, so there are 2128 possible output strings, or 340282366920938463463374607431768211456. To give a sense of how big that number is if you could make a computer try 1,000,000,000 of those a second, and you had 1,000,000,000 computers all doing that then it would still take you 340282366920938463463 years for those computers to try every possible output combination.

    (Bear with me, this is going towards Bitcoin...)

    So, we can take aaaaa and get 4c850c5b3b2756e67a91bad8e046ddac. If we change our input to aaaab we get 9e2bef9f260bd315cf00d25c75b32d7b which is wildly different.

    The trick with the anti-spam email thing was to this:

    • come up with a number that, when added to the end of the input string, gives an output that ends in at least x 0s

    So aaaaa1 gives 6f516930830bd0f5c7dcd7ec997d8545.
    aaaaa2 gives 576e2743ae59917f8b6b0ae3d87d269a
    aaaaa3 gives 8ba2318fc51e4c7dd84a24f7061595cb

    If you wanted at least 1 0 then aaaaa21 will get you ab08919ff78b83b16ec0c07339b689d0.
    If you wanted at least 2 0 then aaaaa222 will get you 3948cf296601eeea4fed7378c2d59d00.
    If you wanted at least 3 0 then aaaaa755 will get you 3bb935cd2de662801477b1d9592dd000.
    If you wanted at least 4 0 then aaaaa80632 will get you aadec1c62b3d9271003d673b8af30000.
    ...

    As you increase the difficulty (number of 0s required) the amount of time you have to spend trying different numbers on the end of the string will increase. Therefore the amount of effort you've put in to this can be demonstrated.

    It's trivial to take the string aaaaa80632 and verify it gives an md5 sum that ends in 0000. But knowing that number 80632 is "worth" a quantifiable amount of computing time.

    Bringing it back to email, it would mean that you could spend a couple of minutes of your computer whirring to tag your email with a number (e.g. the 80632 above) that was easily verifiable for the receiver to see you had almost certainly spent this CPU time on this matter.

    If you wanted to send one email then spending 30s of CPU time is trivial. If you were a spammer wanting to send millions of emails you couldn't spend 30s of CPU time on each email (the input for the hash function includes the destination email address so you can't just compute it once and then send it to millions of people).

    The trick (and the real underlying basis of bitcoin) is considering that this computation has a value. For example, if you were a spammer how much would you be willing to pay a third party to come up with the magic values for each of your spam emails. If you were going to outsource it what would you pay?

    Once you wrap your head around the fact that computation like this can have a value, then there a few more mental hoops you have to jump through and you can create a digital currency like Bitcoin.

    The steps are something along the lines of:

    • everything is public
    • everything can be verified with minimal computation (compared to coming up with the original answers)
    • instead of validating an individual email the hash validates a portion of a ledger
    • that ledger records bits of digital currency going from person a to person b, from person c to d, etc.

    Then once you're willing to accept all of that you've got the natural consideration that things may become more (or less) valuable in the future. Gold is a thing, but its price fluctuates, so why can't the price of a more abstract less tangible thing like "computer has work" also fluctuate.

    Anyway, enough, I've got to go collect my recalcitrant 14yo...

About

Avatar for cyclotron3k @cyclotron3k started