Would be also better if there are papers/books that introduces to these concepts (and toy implementation)?
The author is putting out a similar book called "Mastering Ethereum" in February, also through O'Reilly.
> I became obsessed and enthralled, spending 12 or more hours each day glued to a screen, reading, writing, coding, and learning as much as I could. I emerged from this state of fugue, more than 20 pounds lighter from lack of consistent meals, determined to dedicate myself to working on bitcoin.
To me, this seems a little dramatic for what should be a technical topic.
I haven't looked at the book, but the author is, a bit. Here's a somewhat banana-pants talk he recently gave. https://www.youtube.com/watch?v=FyK4P7ZdOK8
I wonder what pejorative will be coined for cryptocurrency enthusiasts. Banana-pants is just too broad. /s
I wrote about it in a little more detail here: https://www.reddit.com/r/CryptoCurrency/comments/73fi5q/mone...
Also, your diagnose does not make much sense; you state that the dramatised telling in the preface means that the author has autism? In that case that would mean that people like Jimmy Fallon and Stephen Colbert or in that case most Americans (compared to us reserved Dutch people) would have autism.
On top of this you seem to suggest that you have to have some sort of mental condition to do things 'wrong' (as far as you want to call the preface wrong). What disorder do you have that led you to write cliché as 'clise'? Or did you mean 'sexy young man'?
So 4chan is invading HN now? I thought they considered us too intertwined in the cargo cult botnet.
This is the book I wish had existed when I started learning about Bitcoin in 2011. It's a technical deep-dive for a non-expert audience. Only knowledge of high school algebra and a willingness to learn are assumed. Every technical term comes with a definition. Over 300 figures help visual learners understand complex technical topics. Hundreds of footnotes provide jumping-off points and links to online demos. Cross-links allow you to quickly review prior material in later chapters.
There are eight chapters:
1. Bitcoin from Scratch (the view from 20,000 feet of Bitcoin and its subsystems)
2. Authentication (elliptic curve cryptography)
3. Authorization (Script, transactions, and contracts)
4. Network (block chain, consensus, hard/soft forks, governance, segwit, Lightning Network)
5. Privacy (what can and can't be discovered about users of a public block chain)
6. Security (what to protect and why)
7. Wallets (software for using Bitcoin)
8. Bitcoin in Practice (a complete system for using Bitcoin based on the content in the first seven chapters)
- consensus between trustless systems
- failure tolerance between trustless systems
- immutability of data
- verifiable audit trails
- cryptographically secured ownership of data/resource/etc.
- access control (public, private, federated)
- type of consensus (proof-of-work, proof-of-stake, etc.)
- type of data (ledger, map, log) and implementation
Blockchains are designed to solve a certain set of problems. Understanding those problems and their relation to your product will help you determine whether a blockchain is a reasonable solution.
1. Do you need a distributed ledger? (https://en.wikipedia.org/wiki/Distributed_ledger)
2. Do you need proof of work? (https://en.wikipedia.org/wiki/Proof-of-work_system)
3. Does your distributed ledger need to record things such that one block follows the next, as opposed to blocks of data being saved independently of each other? (https://en.wikipedia.org/wiki/Blockchain)
If the answer to all of the above is yes, using a blockchain probably makes sense. Otherwise, you probably want to use something other than a blockchain (for instance, if you just need a distributed ledger, just use a distributed ledger. No need to chain each block together unless that's actually useful for your product).
To me a blockchain is just a tree, where the "parent pointers" are just hashes of the parent nodes rather than their addresses. And I guess to pick one as the "correct" one, you just choose the one with (say) the longest chain. End of story? What else _is_ there to learn about this that people are looking for? (Btw, isn't this just a Merkle tree, which has been around since at least 1979? What's so revolutionary or even different in a blockchain?)
This is where it gets a bit interesting. While Merkle Trees are great for ensuring, immutability, most cryptocurrencies need more than just that. They need to have a way for records to be inserted into this immutable ledger and an incentive to keep adding records to the ledger. This is where Proof of Work and mining rewards come into play, and this is where a lot of altcoins (non-Bitcoin cryptos) have a lot of different opinions. A decent amount of work has also been put into making sure that there isn't an incentive for a miner to mine on two different chains (and cause the ledger to fork) and other concerns.
And proof of work is literally just the hash having a certain number of zero bits, right? Definitely a neat idea but hardly revolutionary if that's all there is to it.
A better single question would be: do you need a distributed ledger with immutability guarantees (i.e. security against an adversary that might want to tamper with the history of your ledger).
But regarding the topic of what it can be used for... yes, I see people talking about doing healthcare with blockchain, or BP using blockchain, or archeology using blockchain, and people asking about how to learn to use blockchain for their next random startup ideas, and I start wondering if I'm going crazy. To me it seems basically like asking "could linked lists revolutionize healthcare?", or "could Dijkstra's algorithm help end global warming?" which sounds like a completely nuts question to ask. Am I just missing a huge, fundamental part of the picture? The whole thing just doesn't make sense to me.
Well, yes, they certainly could, even though that's an extremely vague question from someone who might not even understand what they're asking.
If you're interested in hearing about blockchain's potential from a business and society perspective, there's a bunch of material, but for example the latest Andreesen-Horowitz podcast episode was about "why crypto tokens matter".
Also this recent interview with someone deeply knowledgable about the supply chain world: https://www.youtube.com/watch?v=dla42bY7k90
(if you want just tutorials: http://truffleframework.com/tutorials/)
The Coursera class took around 20 hours end to end.
It covers the basics pretty well.
Also, this course page has some useful links and lecture notes/slides (mostly geared towards graduate students and research) http://soc1024.ece.illinois.edu/teaching/ece598am/fall2016/
I've found that smart contracts have a lot of jargon that can be opaque, but the concepts are familiar to web developers (and not that hard to learn).
For example, in traditional webdev we use our browser to connect to an app server, which is connected to a centralized database.
Writes are little more involved, because you need the network to agree that your writes are valid. So to perform writes, you submit a transaction to the network.
The result is reads are free and writes cost money.
In any case, my site is here. I'll be making the first course free shortly: https://www.newline.co/
I’m n00b in Smart Contracts but they seem like interfaces to reading/writing to a data store.
If I didn’t totally botch what they are. Then I don’t really get why they’re “smart”. The pitfalls of regular programming, seem to apply to contracts. Seems like I could easily code a bug in a smart contract and have it t deployed to the network?? Or did I miss something?
I am not associated with Jordan Leigh nor Decyper.TV in any way except as a customer.
For smart contracts :
Why Bitcoin Matters (2011, NYT) - https://dealbook.nytimes.com/2014/01/21/why-bitcoin-matters/...
What is blockchain, really? An intro for regular people. (2017, Medium) - https://medium.com/@wen_xs/what-is-blockchain-really-an-intr...
Re: “Smart contracts” - here’s a few 101 pieces on ethereum:
A Beginner’s Guide to Ethereum (2017, Coinbase blog) - https://blog.coinbase.com/a-beginners-guide-to-ethereum-46dd...
Ethereum is the Forefront of Digital Currency (2017, Coinbase blog) - https://blog.coinbase.com/ethereum-is-the-forefront-of-digit...
Dan Romero has compiled an excellent "reading list" for digital currencies: https://medium.com/@dwr/digital-currency-reading-list-6219f1...
And here's a 101 for developing a decentralized app (dApp): https://medium.com/@AndreaCoravos/dapps-101-how-do-i-start-d...
I recently also started diving into blockchain related tech, and I blog about it here: http://decentralized.blog/
So far mostly about IPFS, but soon more on the working of the different blockchains out there.
The O'Reilly book is good, you should also look at code in your preferred language, ideally the C++ in which Bitcoin core is written.
Last but absolutely not least - you should buy some Bitcoin and send it to someone, or buy something with it. I'd also recommend going through the trouble of running Bitcoin-Qt and downloading the whole blockchain (which takes several days and requires lots of disk space).
Once you understand all this, the smart contracts thing will be a lot clearer, and you might even have a different opinion on it.
You can create "smart contracts" with bitcoin.
Core blockchain dev, i.e. at a protocol level requires serious chops, not the kind of thing you can just pick up in a few months.
I'd recommend brushing up on broad blockchain concepts and not just intensely studying a single chain / platform. If you want to get into the industry your best bet is to find a company willing to hire you and let you learn hands on.
I found this visual tutorial on blockchain helpful.
The blog also has tutorials to get you started and teach Ethereum concepts.
It focuses on Blockchain and Digital Transactions
I have a project idea, but I want to build the data structure from scratch as opposed to cargo culting something on top of Ethereum.
It it a bit focused on ethereum, but I guess it is useful for starting to understand blockchain and smart contracts in general regardless
- "GOTO 2017 • Blockchain: The Slowest (and most Fascinating) Database in the World • Stefan Tilkov”
Explains how the blockchain works and walks through most of the technical terms you will need to know
- "Ethereum Vs. Bitcoin: What Sets Them Apart? | CNBC”
Uses the blockchain explanation to give you an idea of how the smart contract idea differs Ethereum from Bitcoin
- "Vitalik Buterin explains Ethereum"
3 minute macro explanation of what is Ethereum from its inventor Vitalik Buterin
- "DEVCON1: Ethereum for Dummies - Dr. Gavin Wood”
Ethereum's CTO Dr. Gavin Wood explains in a very macro way the Ethereum concept with an idea of how the “Global Computer” works and what is the “Ethereum Virtual Machine”
- Devcon2: Ethereum in 25 Minutes
Vitalik Buterin give and overview of the Ethereum protocol and shows what is an Ethereum transaction, what is Gas (and how computation time is actually paid for miners), how the state machine works and what you can do with it
- DEVCON1: Ethereum in the Enterprise Environment - Taylor Gerring
Expose core concepts about the blockchain and the Ethereum platform that are valuable to enterprise and how companies can leverage that using web technologies
- Coinbase - A beginner’s guide to Ethereum
- Fat Protocols
- The difference between App Coins and Protocol Tokens
- What’s the Difference Between an ‘ICO’ and a ‘Token Launch’?
Coins vs. Tokens (What is a SNGLS token?)
Source of links, links and more links
- /r/ethereum - getting started
- The Quiet Master of Cryptocurrency — Nick Szabo (Scroll to "Selected Links from the Episode”)
- What The Fuck Is Ethereum? ("I am a total nerd" option)
- Money, blockchains, and social scalability
- Does your dapp need a token?
- Ethereum documentation
- Ethereum Wiki - FAQ
Not sure the Ethereum network can even deploy in 120 minutes these days, but you'll certainly have it built in that time :)
We plan on covering "Getting started with Blockchain development" very soon as there it still an opportunity here to make this much easier.
Build Your Own Blockchain:
Resource List for an Advanced Understanding (Multidisciplinary Approach):
Additionally, here is some advice from Balaji Srinivasan (source: https://www.producthunt.com/live/balaji-s-srinivasan):
1. First, I'd master database and cryptography fundamentals, with something like Dan Boneh's course for the latter
2. Then, I'd read the Bitcoin.org and Ethereum documentation
3. Then, you should write short Python or Go scripts to do things like printing out the blockchain, formatting and signing a transaction by hand, managing private keys, that type of thing. This will give you a feel for the raw data structures.
4. After doing all this, I'd take a look at application libraries like Ryan Shea and Muneeb Ali's new blockstack.org
The reason I'd do it in this order is that you would learn fundamentals first before proceeding to the cutting edge.