Based on my discussions with some experts in the field..
Say Cody just paid Bob some amount in bitcoins. At this time, there could be a large number of pending (unaccepted) transactions like this one waiting to be accepted into the linked list (i.e. the block chain).
One or more miners without coordination, can pick up this transaction + up to 999 other transactions and attempt to add them to the block chain.
They have to overcome a challenge, a computationally intensive challenge, by brute force — They need to find a number (called nonce) such that the integer hash code from hashing function
H(localhost timestamp, //not always in sync with other hosts
[T1, T2, … T1000], // 1 or more pending transactions
the minder’s Id, //typically the IP
previous block’s hash // <– forming a linked list or block-chain
) < barrier
The barrier is a binary number with 3 (or more) leading zeros. In other words, the challenge is mining for an nonce to give a low-enough hash code with enough leading zero bits. Once a miner finds a “solution” and creates a valid block, she broadcasts the block’s hash code (with enough leading zeros) to the network. If one node verifies it, then other nodes would soon verify it. There’s no central authority to decide when to accept. A node accepts it and uses it as “previous block hash” in a new block, as described in TOWP.
The head block of a linked list is special — no previous block! (A Git repo has only one such “block”, but not in blockchain.) 2nd block includes the first block’s hash. 3rd block includes 2nd block’s hash, and indirectly includes first block’s hash. Therefore, for any given block KK, its entire ancestry lineage is hashed into KK.
- TOWP — TheOriginalWhitePaper
- POW — proofOfWork
- lucky — Some miner could be lucky and find a “solution” in the first try, but the challenge is so tough that there’s only brute force.
- LevelOfDifficulty — is the number of leading zeros, like 3. When hardware speeds improve, someone (perhaps the merchant) will increase the LevelOfDifficulty, as explained in TOWP
- immutable — Just like Git, every block is immutable once accepted into the chain.
- The most common hash function is SHA and SCRYPT.
Q: how fast is the verification vs POW
A: POW is supposed to take 10 min on average. Verification should take nanosec, according to the experts I spoke to. Beside the “attached” transactions, I don’t know what inputs there are to the verification, but it computes a hashcode and compares it to something.
Q: Fundamentally, how would verification fail when an owner double-spends a coin?
Q: what if two miners both pick Cody/Bob’s transaction and broadcasts their “solution” hash code? The first miner would win the race (and get the reward after some delay)
Q: How are two independent linked lists handled in one host?
Q: what’s the need for POW?
Q: what’s the motivation for the a miner to take up a transaction?
A: there’s a 25-coin reward, or possibly higher if the Cody or Bob increases the reward
Q: does each coin have an id?
AA: no, but there is ID for each transaction, each block and each account.
Q5: what if verification fails?
%%A: I feel it’s rare but possible. If happens, the node would ignore it.
Q5b: how would the miner know? Not sure.