Bitcoin Forum
November 03, 2024, 10:27:13 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: [SOLVED] Is there an easy explanation of how Bitcoin works? A video maybe?  (Read 3489 times)
Maciek (OP)
Full Member
***
Offline Offline

Activity: 254
Merit: 100


View Profile
February 17, 2013, 03:20:20 PM
Last edit: February 17, 2013, 07:16:26 PM by Maciek
 #1

By "works" I mean - really works - with all the sha256, difficulty and mining computers operations. Smiley

As mentioned here (by Korbman):
Quote
Now if only someone would write up something like this that explains how Bitcoin works (turning technical details into something a third grader could understand)..essentially taking the Wiki version, adding more detail, and removing words longer than 6 characters  Tongue. Or maybe that's been done already and I've just missed it? I'm getting tired of explaining cryptography to people  Sad
https://bitcointalk.org/index.php?topic=143992.0
We need something similar to what @hazek did (in the topic I just mentioned) - but from the technical point of view.
And I believe we need it to be easy to understand for everyone.


I would love to show begginers this video - if it exists...
Or maybe somebody has it all explained in PDF or in a Forum Post?


What I think would be perfect is - in way which CGP Grey is doing his youtube videos:
http://www.youtube.com/watch?v=LrObZ_HZZUc The (Secret) City of London, Part 1: History
[He even included Bitcoin logos in this vid!]



Thanks and may the force of Bitcoin be with you Wink

EDIT:
I think problem is solved. Now we would probably need a video with that. Cheesy
Basics by @mpfrank
https://bitcointalk.org/index.php?topic=144642.msg1534348#msg1534348

The "difficult mathematical problem" explanation by @DannyHamilton
https://bitcointalk.org/index.php?topic=144642.msg1534672#msg1534672
mpfrank
Sr. Member
****
Offline Offline

Activity: 247
Merit: 250


Cosmic Cubist


View Profile
February 17, 2013, 04:06:26 PM
 #2

The basic explanation is pretty simple.  The technology is based on digital signatures (http://en.wikipedia.org/wiki/Digital_signature).  A bitcoin "account" is essentially just a digital signature keypair, meaning that only the account owner has the private key that's needed to digitally sign messages (similar to bank checks) authorizing the transfer of bitcoins out of their account.  Anyone, however, can verify the authenticity of those messages, or send coins to an account by referring to its address (which is a unique fingerprint of that account's public key).  There's a public database of all the valid transactions that have ever occurred called the "blockchain", which is copied on computers (nodes of the bitcoin network) all over the world; any computer which has an up-to-date copy of the blockchain can use it to calculate the current balance of any account.  A new transaction that you initiate is broadcast to a peer-to-peer network of active bitcoin nodes by your bitcoin client.  The transaction becomes permanent when it is incorporated into a new "block" of transactions which is added to the blockchain by a miner (a computer running mining software).  To create a new block requires solving a difficult mathematical problem, so that new blocks do not get created too often (about one every 10 minutes on average), which ensures that there is only one longest version of the blockchain in existence at any given time, which is then accepted by all nodes on the network as the new state of the bitcoin database.  As a reward for solving the hard problem of creating a new block, the miner that solved it is automatically assigned some new bitcoins (25 BTC) as well as the transaction fees from all the transactions in the block.  Any questions?

If all the sovereign non-cryptocurrencies will eventually collapse from hyperinflation, you can't afford *not* to invest in Bitcoin...  See my blog at http://minetopics.blogspot.com/ .

Donations accepted at:  17twYNyqTiCTM2gJmumkytvhZh4sCVSKNH
zvs
Legendary
*
Offline Offline

Activity: 1680
Merit: 1000


https://web.archive.org/web/*/nogleg.com


View Profile WWW
February 17, 2013, 04:10:48 PM
 #3

here:

http://www.youtube.com/watch?v=tpG8Z-k2koE
DannyHamilton
Legendary
*
Offline Offline

Activity: 3472
Merit: 4801



View Profile
February 17, 2013, 04:29:45 PM
 #4

- SNIP -
Any questions?

Some of the common ones I've seen (and can think of off the top of my head), that your explanation doesn't cover are:

  • If I know the private key, how do I calculate the Public Key?
  • If I know the private key, how do I calculate the Bitcoin Address?
  • If the Bitcoin address is a "unique fingerprint of the account's public key", how is it used to verify the signature?
  • What "difficult mathematical problem" is being computed?
  • How do all the nodes know that the miner solved the "difficult mathematical problem", without having to spend the time to solve it themselves?
  • Why does the blockchain show multiple inputs from the same address?
  • Why does my transaction have outputs to an address I didn't specify?
  • Why does the total of unspent outputs in the blockchain associated with the addresses in my "Receive Coins" not match my Wallet Balance?
DannyHamilton
Legendary
*
Offline Offline

Activity: 3472
Merit: 4801



View Profile
February 17, 2013, 04:43:12 PM
 #5


I don't see how your video answers the question presented by the OP?
mpfrank
Sr. Member
****
Offline Offline

Activity: 247
Merit: 250


Cosmic Cubist


View Profile
February 17, 2013, 04:45:35 PM
 #6

- SNIP -
Any questions?

Some of the common ones I've seen (and can think of off the top of my head), that your explanation doesn't cover are:

  • If I know the private key, how do I calculate the Public Key?
  • If I know the private key, how do I calculate the Bitcoin Address?
  • If the Bitcoin address is a "unique fingerprint of the account's public key", how is it used to verify the signature?
  • What "difficult mathematical problem" is being computed?
  • How do all the nodes know that the miner solved the "difficult mathematical problem", without having to spend the time to solve it themselves?
  • Why does the blockchain show multiple inputs from the same address?
  • Why does my transaction have outputs to an address I didn't specify?
  • Why does the total of unspent outputs in the blockchain associated with the addresses in my "Receive Coins" not match my Wallet Balance?


OK, so you want more technical details.  That doesn't sound like the "easy explanation" the OP was asking for.  But I can answer some of them... 

If all the sovereign non-cryptocurrencies will eventually collapse from hyperinflation, you can't afford *not* to invest in Bitcoin...  See my blog at http://minetopics.blogspot.com/ .

Donations accepted at:  17twYNyqTiCTM2gJmumkytvhZh4sCVSKNH
zvs
Legendary
*
Offline Offline

Activity: 1680
Merit: 1000


https://web.archive.org/web/*/nogleg.com


View Profile WWW
February 17, 2013, 04:49:06 PM
 #7


I don't see how your video answers the question presented by the OP?
you show amazing cognizance
mpfrank
Sr. Member
****
Offline Offline

Activity: 247
Merit: 250


Cosmic Cubist


View Profile
February 17, 2013, 04:50:20 PM
 #8

  • If I know the private key, how do I calculate the Public Key?
...
[/list]


The answer to that one is inevitably going to be fairly technical.  It's not a trivial calculation, and you have to get all details of that algorithm exactly right.  Here's the Wikipedia page about the digital-signature system used:

http://en.wikipedia.org/wiki/Elliptic_Curve_DSA

If all the sovereign non-cryptocurrencies will eventually collapse from hyperinflation, you can't afford *not* to invest in Bitcoin...  See my blog at http://minetopics.blogspot.com/ .

Donations accepted at:  17twYNyqTiCTM2gJmumkytvhZh4sCVSKNH
DannyHamilton
Legendary
*
Offline Offline

Activity: 3472
Merit: 4801



View Profile
February 17, 2013, 04:50:32 PM
 #9

OK, so you want more technical details.  That doesn't sound like the "easy explanation" the OP was asking for . . .

Huh

. . . with all the sha256, difficulty and mining computers operations . . .

Quote
. . . turning technical details into something a third grader could understand)..essentially taking the Wiki version, adding more detail . . . I'm getting tired of explaining cryptography to people  Sad
. . . but from the technical point of view . . .
mpfrank
Sr. Member
****
Offline Offline

Activity: 247
Merit: 250


Cosmic Cubist


View Profile
February 17, 2013, 04:51:44 PM
 #10

OK, so you want more technical details.  That doesn't sound like the "easy explanation" the OP was asking for . . .

Huh

. . . with all the sha256, difficulty and mining computers operations . . .

Quote
. . . turning technical details into something a third grader could understand)..essentially taking the Wiki version, adding more detail . . . I'm getting tired of explaining cryptography to people  Sad
. . . but from the technical point of view . . .

So he wants a detailed explanation of a highly technical subject, but in baby language?

If all the sovereign non-cryptocurrencies will eventually collapse from hyperinflation, you can't afford *not* to invest in Bitcoin...  See my blog at http://minetopics.blogspot.com/ .

Donations accepted at:  17twYNyqTiCTM2gJmumkytvhZh4sCVSKNH
zvs
Legendary
*
Offline Offline

Activity: 1680
Merit: 1000


https://web.archive.org/web/*/nogleg.com


View Profile WWW
February 17, 2013, 04:53:56 PM
 #11

OK, so you want more technical details.  That doesn't sound like the "easy explanation" the OP was asking for . . .

Huh

. . . with all the sha256, difficulty and mining computers operations . . .

Quote
. . . turning technical details into something a third grader could understand)..essentially taking the Wiki version, adding more detail . . . I'm getting tired of explaining cryptography to people  Sad
. . . but from the technical point of view . . .

So he wants a detailed explanation of a highly technical subject, but in baby language?
and therein lies the crux of the problem
mpfrank
Sr. Member
****
Offline Offline

Activity: 247
Merit: 250


Cosmic Cubist


View Profile
February 17, 2013, 04:58:01 PM
 #12


  • If I know the private key, how do I calculate the Bitcoin Address?


You calculate the public key and then take the SHA-256 hash of it.

If all the sovereign non-cryptocurrencies will eventually collapse from hyperinflation, you can't afford *not* to invest in Bitcoin...  See my blog at http://minetopics.blogspot.com/ .

Donations accepted at:  17twYNyqTiCTM2gJmumkytvhZh4sCVSKNH
DannyHamilton
Legendary
*
Offline Offline

Activity: 3472
Merit: 4801



View Profile
February 17, 2013, 04:59:20 PM
 #13

So he wants a detailed explanation of a highly technical subject, but in baby language?

Now you are catching on to why he can't find what he is looking for.  Note, I already know the answers to the questions I posed.  I wasn't looking for answers. I was just pointing out common questions that I see asked by people who are trying to understand the technical details of Bitcoin.
DannyHamilton
Legendary
*
Offline Offline

Activity: 3472
Merit: 4801



View Profile
February 17, 2013, 05:00:00 PM
 #14

  • If I know the private key, how do I calculate the Bitcoin Address?
You calculate the public key and then take the SHA-256 hash of it.
This is incorrect.
mpfrank
Sr. Member
****
Offline Offline

Activity: 247
Merit: 250


Cosmic Cubist


View Profile
February 17, 2013, 05:01:01 PM
 #15


...
  • If the Bitcoin address is a "unique fingerprint of the account's public key", how is it used to verify the signature?
...

Most digital signature systems include the public key used to sign the message as part of the signed message.  You simply hash this, and compare the hash to the Bitcoin address.  If they are equal, then that verifies that the signature on that message corresponds to that account.

If all the sovereign non-cryptocurrencies will eventually collapse from hyperinflation, you can't afford *not* to invest in Bitcoin...  See my blog at http://minetopics.blogspot.com/ .

Donations accepted at:  17twYNyqTiCTM2gJmumkytvhZh4sCVSKNH
mpfrank
Sr. Member
****
Offline Offline

Activity: 247
Merit: 250


Cosmic Cubist


View Profile
February 17, 2013, 05:02:33 PM
 #16

  • If I know the private key, how do I calculate the Bitcoin Address?
You calculate the public key and then take the SHA-256 hash of it.
This is incorrect.

OK, then please correct me.  Apparently I'm not the best one to answer his question...

If all the sovereign non-cryptocurrencies will eventually collapse from hyperinflation, you can't afford *not* to invest in Bitcoin...  See my blog at http://minetopics.blogspot.com/ .

Donations accepted at:  17twYNyqTiCTM2gJmumkytvhZh4sCVSKNH
DannyHamilton
Legendary
*
Offline Offline

Activity: 3472
Merit: 4801



View Profile
February 17, 2013, 05:08:11 PM
 #17

  • If I know the private key, how do I calculate the Bitcoin Address?
You calculate the public key and then take the SHA-256 hash of it.
This is incorrect.
OK, then please correct me.  Apparently I'm not the best one to answer his question...

https://en.bitcoin.it/wiki/Technical_background_of_Bitcoin_addresses

  • Calculate the public key using the secp256k1 curve
  • Perform SHA-256 hashing on the public key
  • Perform RIPEMD-160 hashing on the result of SHA-256
  • Add version byte in front of RIPEMD-160 hash
  • Perform SHA-256 hash on the extended RIPEMD-160 result
  • Perform SHA-256 hash on the result of the previous SHA-256 hash
  • Take the first 4 bytes of the second SHA-256 hash. This is the address checksum
  • Add the 4 checksum bytes from point 7 at the end of extended RIPEMD-160 hash from point 4. This is the 25-byte binary Bitcoin Address
  • Convert the result from a byte string into a base58 string using Base58Check encoding.
Maciek (OP)
Full Member
***
Offline Offline

Activity: 254
Merit: 100


View Profile
February 17, 2013, 05:30:24 PM
 #18

Thank you for answering me Smiley

One of the most important questions in my opinion is:
Quote
What "difficult mathematical problem" is being computed?
I mean not in the "baby language" - but let's say - in understandable way for a so called "non-technical" person. Smiley


DannyHamilton
Legendary
*
Offline Offline

Activity: 3472
Merit: 4801



View Profile
February 17, 2013, 06:08:52 PM
Last edit: February 17, 2013, 07:28:31 PM by DannyHamilton
 #19

One of the most important questions in my opinion is:
Quote
What "difficult mathematical problem" is being computed?
I mean not in the "baby language" - but let's say - in understanable way for a so called "non-technical" person. Smiley

To start with you need to understand (or at least accept) that there are certain mathematical calculations that are very easy&fast to do in one direction and very difficult&slow to do in the opposite direction.

One example of this would be multiplying large prime numbers.

If I give you 2 prime numbers:
9931 and 9803

You can quickly and easily multiply them together and determine that the result is:
97,353,593

On the other hand if I give you a number:
93,603,659

And ask you which two prime numbers it is the product of, you would find it difficult and time consuming to determine that the answer is:
9923 & 9433

Now that we have established that there are mathematical problems that can be easy&fast in one direction and difficult&slow in the other. . .

The particular mathematical problem being solved during mining is called a SHA-256 hash.  This algorithm takes a set of data and calculates a 256 bit number from that data. It is very fast and easy for a computer to calculate a SHA-256 hash from a set of data.  It is extremely slow and difficult to go the other way, finding a set of data that will exactly match a given hash. It is so slow and difficult that it can be considered impossible.

Without performing the SHA-256 algorithm, it isn't possible to know ahead of time (with current mathematics) what the resulting 256 bit number will be, so the result is essentially random.  Changing even a single bit in the original data changes the resulting 256 bit number in an unpredictable way, the entire SHA-256 algorithm must be re-calculated to determine the new result.  If you are given a SHA-256 hash, there is no known fast or easy way to determine what original set of data will result in that particular hash.

The miner packages up all the transactions that they want to include in a block. Then they perform a SHA-256 hashing process on all the transactions and include the resulting number (often referred to as a Merkle Root) in the block header.  Changing any information in any transaction will change this Merkle Root, and therefore change the header of the block.

The miner then calculates a SHA-256 hash of the block header. To force miners to prove that they've done a certain amount of mathematical work, the bitcoin protocol sets a target value for this SHA-256 hash.   If the hash that the miner calculated is less than the target value, then the block is "solved" and ready to be published to the network.  If the hash is greater than the target value, the miner changes a special field in the header called a nonce.  This field exists solely for the purpose of modifying the resulting hash value.  The miner then recalculates the SHA-256 hash of the block header (with this new nonce value).  The miner repeats this process over and over until the resulting hash is less than the target value.  There is no known way to predict what nonce will be needed ahead of time.  The miner has to just keep trying until they get a low enough hash value.

As the numbers (and speeds) of miners working on this hashing problem increases, they begin discovering a hash that is less than the target value faster.  The protocol is then designed to require an even lower target value to make it more difficult to find an appropriate hash.  If miners start turning off their mining systems, discovering a hash that is less than the target value will start taking longer. The protocol is then designed to require a higher target value to make it easier to find an appropriate hash.  The protocol adjusts this target value every 2016 blocks to keep the average amount of time to solve a block at 10 minutes.  This forces the entire network to put "on average" 10 minutes of hashing calculations towards each block.

If someone wanted to change any information in an already solved block, it would change the value of the Merkle Root in the header.  This would change the hash of the header.  The person attempting to modify the block would have to find a hash of their new header that was lower than the necessary target in order to get any of the peers on the network to accept it as valid.

Each new block includes the exact hash of the previous block in its header.  This means that the person attempting to modify data in a solved block has to not only find a low enough hash for the block that they are attempting to modify, but that they have to find low enough hashes for every block that has been created since then.  While the person attempting to change an old block is trying to solve all these hashes of low enough value, the rest of the network is working on a new block.  This means that the person attempting to modify the blockchain history has to catch up with the rest of the honest network that is trudging on ahead of them.  The only way to realistically do this is to have more hashing power than the entire combined honest network.

Note that once a header (with its nonce and resulting hash) is broadcast to the network, it is very fast for each peer to verify that the previous work by the miner was valid.  They only need to calculate a single hash of the broadcast header to see if the resulting hash is the broadcast hash, and then compare that hash to the target value to confirm that it is low enough.

Was that too technical? Or did I manage to describe it in "an understandable way for a so called non-technical person"
Maciek (OP)
Full Member
***
Offline Offline

Activity: 254
Merit: 100


View Profile
February 17, 2013, 07:13:06 PM
 #20

Thank you: mpfrank and DannyHamilton! Smiley

It is very understandable now Smiley
Pages: [1] 2 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!