A basic implementation of the Proof of Work (PoW) algorithm used as Sybil prevention by Bitcoin and other PoW networks. A deeper comparison between PoW and Proof of Stake (PoS) can be found in our article PoW vs PoS: The Next Industrial Revolution.
Method & Python Script
Install VS Code: https://code.visualstudio.com or similar application.
In VS Code open a new terminal window by navigating to Terminal > New Terminal.
Install Homebrew by pasting the following code into the terminal and pressing Enter:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Install Python in the same way:
brew install pythonThere are no dependencies to install. The script uses only hashlib and datetime, both of which are part of the Python standard library and are already available once Python is installed. Do not try to
pip installthem: the packages published on PyPI under those names are an obsolete Python 2 backport ofhashliband an unrelated Zope date type, so the command will either fail to build or shadow the standard library.Now, create a project folder and navigate to it in VS Code via File > Open Folder.
Create a new Python file in VS Code via File > New File. Name it something like pow.py
This script calculates the hash for the text “hello” with five leading zeros. Copy and paste it into pow.py and save it.
# v.0.1
from hashlib import sha256
from datetime import datetime
def pow(data, zeros, nonce):
data = str(data).encode("utf-8")
zeros = zeros * "0"
t1 = datetime.now()
while True:
combo = data + f"{nonce}".encode("utf-8")
hash_ = sha256(combo).hexdigest()
if hash_.startswith(zeros):
t2 = datetime.now()
return nonce, hash_, t2-t1
else:
nonce += 1
output = pow("hello", 5, 0) # 5 = ~ 1 second
print(output)Run the script from the terminal with:
python3 pow.py