Would be also better if there are papers/books that introduces to these concepts (and toy implementation)?
http://chimera.labs.oreilly.com/books/1234000001802/index.ht...
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
http://bitzuma.com/owning-bitcoin/
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)
https://blankslate.io/?note=48627
(if you want just tutorials: http://truffleframework.com/tutorials/)
- consensus between trustless systems
- failure tolerance between trustless systems
- immutability of data
- verifiable audit trails
- cryptographically secured ownership of data/resource/etc.
For each of these areas there are more specific considerations, e.g.: - access control (public, private, federated)
- type of consensus (proof-of-work, proof-of-stake, etc.)
- type of data (ledger, map, log) and implementation
With blockchains, there are now huge classes of problems that can be dealt with, that were impossible or impractical with traditional databases (where trust is required between multiple parties.)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?)
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.
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.
In Ethereum dev, every node has a copy of the entire database. To write distributed apps, you read from your local copy. That is, for a JavaScript DApp, you use the web3 JavaScript library to connect to a local node you have running on your own machine.
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.
Solidity is tricky, but not that bad if you're careful. If you know JavaScript already, you can totally learn to program smart contracts.
In any case, my site is here. I'll be making the first course free shortly: https://www.newline.co/
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 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.
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.
https://learn-anything.xyz/databases/distributed-databases/b...
For smart contracts :
https://learn-anything.xyz/distributed-computing/ethereum/sm...
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...
[0]: https://en.bitcoin.it/wiki/Contract
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.
It has resources for other concepts like Design, UX, JavaScript, Startups, etc.
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.
https://github.com/hyperledger/hyperledger/blob/master/hyper...
https://learnxinyminutes.com/docs/solidity/
I found this visual tutorial on blockchain helpful.
[1] https://medium.com/@mattcondon/getting-up-to-speed-on-ethere...
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.
1. https://medium.freecodecamp.org/explain-bitcoin-like-im-five...
2. https://www.youtube.com/watch?v=JIxwTx7o_B4
3. https://www.youtube.com/watch?v=bBC-nXj3Ng4
4. https://www.youtube.com/watch?v=_160oMzblY8
5. https://itunes.apple.com/us/podcast/244-the-quiet-master-of-...
6. http://investorfieldguide.com/hashpower/
Build Your Own Blockchain:
1. https://dev.to/aunyks/lets-build-the-tiniest-blockchain
2. https://hackernoon.com/learn-blockchains-by-building-one-117...
3. https://github.com/jamesob/tinychain
Resource List for an Advanced Understanding (Multidisciplinary Approach):
1. https://docs.google.com/document/d/1UiMS4Br7LkTIRdEOPjCukOxG...
---
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.
It it a bit focused on ethereum, but I guess it is useful for starting to understand blockchain and smart contracts in general regardless
---
Watching
- "GOTO 2017 • Blockchain: The Slowest (and most Fascinating) Database in the World • Stefan Tilkov” https://www.youtube.com/watch?v=li3rfBAP_fE
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” https://youtu.be/0UBk1e5qnr4
Uses the blockchain explanation to give you an idea of how the smart contract idea differs Ethereum from Bitcoin
- "Vitalik Buterin explains Ethereum" https://youtu.be/TDGq4aeevgY
3 minute macro explanation of what is Ethereum from its inventor Vitalik Buterin
- "DEVCON1: Ethereum for Dummies - Dr. Gavin Wood” https://www.youtube.com/watch?v=U_LK0t_qaPo
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 https://youtu.be/66SaEDzlmP4
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 https://youtu.be/HXNWhXuMNpw
Expose core concepts about the blockchain and the Ethereum platform that are valuable to enterprise and how companies can leverage that using web technologies
---
Reading
- Coinbase - A beginner’s guide to Ethereum https://blog.coinbase.com/a-beginners-guide-to-ethereum-46dd...
- Fat Protocols http://www.usv.com/blog/fat-protocols
- The difference between App Coins and Protocol Tokens https://blog.0xproject.com/the-difference-between-app-coins-...
- What’s the Difference Between an ‘ICO’ and a ‘Token Launch’? Coins vs. Tokens (What is a SNGLS token?) https://medium.com/@SingularDTV/whats-the-difference-between...
---
Source of links, links and more links
- /r/ethereum - getting started https://www.reddit.com/r/ethereum/comments/61y5ix/welcome_to...
- The Quiet Master of Cryptocurrency — Nick Szabo (Scroll to "Selected Links from the Episode”) https://tim.blog/2017/06/04/nick-szabo/
- What The Fuck Is Ethereum? ("I am a total nerd" option) http://whatthefuckisethereum.com/#nerd
---
Extra reading
- Money, blockchains, and social scalability http://unenumerated.blogspot.com.br/2017/02/money-blockchain...
- Does your dapp need a token? https://medium.com/@simondlr/does-your-dapp-need-a-token-394...
- Ethereum documentation http://www.ethdocs.org/en/latest/index.html
- Ethereum Wiki - FAQ https://github.com/ethereum/wiki/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 :)
http://www.theblockchainhq.com/newsletter/
We plan on covering "Getting started with Blockchain development" very soon as there it still an opportunity here to make this much easier.