I have been asked several questions regarding block-chain, In the following I have tried to answer them as well as I can.
Q.1. I didn’t understand the math problem using the “nonce”. If I understand, they take the data in the proposed new block and append a large random number (the nonce). Then they run this combined number through a hash function to get a target number. Can I assume each miner knows the hash function? But then what? Do they also know the original block data? I can see that guessing nonces, appending them to the block data, and seeing how they hash could be quite quick if the requirement only be that the winning hash number obtained has to be less than the original target number. Why is this a “hard” problem?
A.1 The miners do know the data, hash function and the final answer. But the problem of guessing the nonce by trial and error is neither easy nor quick. If the requirement is complete solution, it will almost take eternity to get the solution (below is the number of combinations). So partial solution to get the block chain moving. Even the partial solution can take a very long time (depending on how powerful a computer you have). So to keep the block chain moving, the level of difficulty is adjusted. If the blockchain is moving too slow, the level of difficulty is lowered, i.e., the threshold is made larger. If it is moving too fast the difficulty is increased (threshold made lower). Also note that the ‘nonce’ solution is not unique. This is where the time factor comes in. Whosoever gets ‘a’ solution first that gives the partial answer wins the bid.
Also, the bitcoin cryptographic hash is a 256 bit value, which has 10^77 values. It is computationally cheap to compute a single hash value, but since you have to guess many nonces to find a hash below the threshold, the proof of work can be made arbitrarily computationally expensive by adjusting the threshold value.
Q.2 . Is the point of the math problem that it be computationally expensive to add a block to a block-chain, making them expensive to change?
A.2 No. The winning miner does get a reward. If the reward does not cover the computational expenses, there is no point in being a miner. The point of the math problem, I think is this. 1) It assures that the miner has powerful enough resources to keep the block chain moving at a reasonable speed and to store the huge amounts of data in Block chain. 2) The random process of choosing bidders assures security and 3) The reward process keeps the economy moving. Every time a reward is to be made, new crypto currencies are created. Also, by implementing mining, owners of a large amount of bitcoins don’t rule the bitcoin network, which can be a problem with other methods of validating new blocks. Of course there might be many other more efficient ways to do these. This is where the research is being done.
One major disadvantage with bitcoin is its waste of resources, e.g., electricity to run a major server farm dedicated to mining.
Q.3 If the math problems are expensive enough to be useful, how does the block chain scale up to handling large numbers of transactions in real time?
A.3 I think the answer to Q.1 and Q.2 answer this as well.
Q.4 Can I assume ledgers are only stored on nodes? Otherwise if individual block-chain users needed to store their own copies of ledgers, you would need to have a TON of storage to make a transaction with Amazon, for example.
A.4 .Yes. If I am not mistaken, the ledgers are stored on mining nodes for most cryptocurrencies.
Q.5 Are the contents of a block encrypted or do the nodes have the ability to see all of the data in a ledger?
A.5 The nodes can see all the data but cannot change anything.
Q.6 In your description, the entire peer-to-peer network needed to be able to check a user’s account to see if they had sufficient funds to make a transaction. Really? You have to open up your account balances to all nodes in order to use block-chain? That would seem to be much less secure than the current system in which you only need to trust a single entity (your bank).
A.6 My understanding is this. First of all each transaction has a private key and a public key. Only the account holder has the private key. The public key is available to all the nodes. From this key and from the public keys of all the previous transactions, the nodes can compute the balance of currency u have. (Even humans can do this). However, to steal the money, one needs both the private and public key. Also the public key has the account balance, but one cannot determine the owner with this key.
Having said this there are instances of people who can hack into to the private key and stealing money.