I know you all just wanna read about the price but for any of you who want to learn more about the development side: I thought I'd share some of the cool sh*t I've found on the web.
Getting started
Blockchain Development Mega Guide (Medium Article)
Resources
How to become a blockchain developer
I don't know why they chose javascript to demonstrate lol, but otherwise, this is a solid guide!
https://asecuritysite.com/encryption
Site is kinda ugly, but packed with information about cryptography, with demonstrations and code.
https://en.bitcoin.it/wiki/Category:Developer
The bitcoin wiki developer page.
Free courses
These are about understanding more than programming but... It's a decent start.
Blockchain Technology - Berkley
Bitcoin and Blockchain - Khan Academy
Cryptography Course - Stanford
Blockchain Fundamentals - Plural sight
Blockchain Principles and Practices - Plural sight
Hyperledger Blockchain Technologies - Linux Foundation
Introduction to FinTech - Hong Kong University
What the Guides don't tell you...
There are a good few things these guides don't tell you. These aren't hard concepts but are often glossed over or replaced with a more convenient learning example.
...about mining
In practice, mining isn't really about looking for a hash starting with serval '0' bits. Mining actually requires finding a hash that has a numerical value is less than a target hash (this results in a number of '0' bits). That target hash can be calculated from the difficulty. Bitcoin wiki page on difficulty.
//pseudo code hash = sha256(block) if big_endian(hash) < big_endian(target_hash): mined = true
...about adjusting difficulty
Difficulty must be adjusted to keep up with the changing hash rate of the network (to keep a block time of say 10 mins). The easiest way is to adjust the current target based on how much faster or longer it took to mine X blocks.
``` //pseudo code
target_hash = big_endian(diff_to_target(difficulty))
quotient = epoch_duration / expected_duration
new_target_hash = target_hash * quotient
difficulty = target_to_diff(new_target_hash)
```
I will add more to this when I get a chance
No comments:
Post a Comment