Exploring the Blockchain
Joe Buza
What is a Blockchain?
Distributed database that is used to maintain a list of records, called blocks, which are linked and secured using cryptography.
What is a block?
ID
Previous Hash
Timestamp
Data
Nonce
Which block is it. Genesis block #0
When the block was added
Hash of the previous block
Information stored in the block
Number of iterations to find a valid block
Genesis Block
How is a block mined?
-
Look at the latest block on the blockchain
-
Get the Index and increment by 1
-
Get the latest block's hash and store as previous hash
-
Create data
-
Calculate Hash
-
Calculate Nonce
Demo
How is hash calculated?
SHA256(index + previousHash + timestamp + data + nonce)
Proof of work
-
Not just any hash value is valid.
-
A valid hash has to pass a requirement, called Difficulty.
Difficulty
-
This is the minimum requirement for a valid hash.
-
A valid hash has at least four leading 0’s. (demo)
function isValidHashDifficulty(hash, difficulty) {
for (var i = 0, b = hash.length; i < b; i ++) {
if (hash[i] !== '0') {
break;
}
}
return i >= difficulty;
}
What is a nonce?
-
Number of iterations used to find a valid hash
-
This process is called mining
let nonce = 0;
let hash;
let input;
while(!isValidHashDifficulty(hash)) {
nonce = nonce + 1;
input = index + previousHash + timestamp + data + nonce;
hash = CryptoJS.SHA256(input)
}
What's the point?
-
Mining and POW keep the blockchain immutable.
-
This is what makes the blockchain hack proof.
Resources
Questions?
Exploring the Blockchain
By Joe Buza
Exploring the Blockchain
We go inside the blockchain. What it's made of and how it all connects together.
- 1,131