Proof of work คือการประมวลผลโดยใช้ CPU ถูกนำมาใช้ในส่วนของการตรวจสอบค่าที่ถูก Hash เช่นอัลกอริทึ่ม SHA-256
โดยเบื้องหลังการสร้างระบบ Proof of work นั้นเป็นการคำนวณค่า Nouce
Each owner transfer coin by signing the hash to the previous transaction and the public key of the next owner.
The main problem is Payee can’t verify the ”Previous Transaction” / the payee cannot make sure that the hash they got is the earliest one and that one of the owners did not double-spend coin.
According to the BTC concept - the earliest transaction is the one that counts. But which one is the earliest?
So, the mint-based model (3rd party) is formed. Its function is to make aware of all of the transactions and decides which arrived first.
To perform this without a trusted 3rd party = transaction must be publicly announced.
Problem: The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received.
Timestamp Server (The solution purpose for the above problem)
Timestamp proves that
Data must exist at the time
In chronological order to get into the hash
Each timestamp includes the previous timestamp (The one before it)/ forming a chain.
Proof-of-Work
// todo
Network (Step to run the network)
New transaction form
Then, broadcast transactions to all nodes (Transaction broadcasts do not have to reach all nodes, just broadcast until the transaction gets into a block)
Each node collect new transaction to its block
Node works on finding the difficult POW to its block — Q: Why difficult one?
When the node finds POW, then broadcast the block to all nodes.
Nodes will accept the block when the transaction is valid and not already spent — Q: What is meant by not already spent?
Nodes express their acceptance of the block by working on creating the next block in the chain.
Node Function = Collect new transaction + work on finding the difficult POW
Incentive
Q: What is meant by this "*the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block.*" → Distribute coin into circulation.
Incentives can be funded in 2 ways
Block rewards
Transaction fees
Q: What is meant by "*If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction.*"
Incentives help encourage nodes to stay honest
If the attacker has power over all the honest nodes // (51% attack) the attacker can choose btw
Using it to defraud people - steal their payment
Or use it to generate a new coin → Q: How?
Reclaiming Disk Space
Reclaiming disk space by discarding the old transaction.
To facilitate this without breaking the block’s hash → hash transaction in a Merkle Tree (by keeping only the root in the block hash)
Old blocks can be combined and cut off twigs of the tree and keep only the big branches.
Simplified Payment Verification
It is possible to verify payment without running a full network node. By keeping a copy of the block headers of the longest POW
BUT can’t track back the transaction. Can only link to the chain, and see that the network node has accepted by further confirming the network.
Combining and Splitting Value
It would be massively if we make a separate transaction for every cent in a transfer. So, allowing “Split and Combined” transactions helps contain multiple input and output. Q: What is meant by multiple input and output?
No need to extract a complete standalone copy of the transaction’s history.
Privacy
The traditional banking model builds privacy by limiting access to information which controls by third parties.
Publishing all transactions is the key to cutting off the third parties BUT this makes transactions not private.
So, keeping public keys anonymous can keep all transactions private.
Q: Need an explanation for the diagram.
As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner.
We should not always use the same pub key because people can really trace back and know who you are.