We will start by covering any of the course administrative details
- Continue with Lecture 04 - Proof of Work; finish up material we missed
- Project Groups - Finalising groups
- A1 due Friday at 12:00
- Implement Proof-of-Work mining on your local machine in python. See the script here and code here.
- Plot your progress on continual 1% improvement. Does the plot look right?
- Implement a difficulty adjustment. Let your script run overnight and assess if the difficulty adjustment is doing as it should. You will have to consider how to decide when difficulty should be adjusted --- for bitcoin its fixed every 2016 blocks, but this script doesn't have blocks.
-
NotebookLM just on the content for this lecture public link here (you need a Google account)
-
Sample output:
-
What is Proof of Work (PoW) in the context of blockchain technology? Proof of Work (PoW) is a fundamental consensus mechanism used in various cryptocurrencies, notably Bitcoin and historically Ethereum, to secure and validate transactions on a decentralized network. It requires network participants, known as "miners," to expend significant computational effort to solve complex cryptographic puzzles. This "work" involves generating a "winning hash" for a block of transactions, which is a hexadecimal number below a certain difficulty target set by the network. This process demonstrates that computational effort has been expended honestly, preventing fraud and double-spending, and allowing the network to reach consensus on the true state of the blockchain.
-
How does the "work" in Proof of Work actually function for a cryptocurrency like Bitcoin? In a PoW system like Bitcoin, the "work" involves miners creating a temporary file (a block) containing recent transactions. The block header includes fields like software version, previous block's hash, Merkle root, timestamp, difficulty target, and a "nonce." Miners continuously adjust the nonce (and an "extra nonce") and send the entire block's information through a hashing algorithm. They repeat this trial-and-error process until they find a hash value that is less than or equal to the network's current difficulty target. This successful hash proves the computational effort and allows the block to be added to the blockchain. Other network participants can then easily verify this proof, ensuring the integrity of the transactions.
-
- 🤷♂️
⬅️ back