I just read the preface and have to ask... is this heavy on marketing, cheerleading and kool-aid? First the author makes it sound like the Nakamoto paper was sent from the heavens and then this:
> 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'm a cryptocurrency enthusiast myself. To be more precise, the talk is ignorant of the history of money as a system of domination, and utopian in that it ignores critical vulnerabilities intrinsic to distributed-consensus currency systems.
That's what prefaces often sound like. It's the author introducing themself and their claim to authority that will make you take their following content seriously. This author is just explaining why they cared so much as to write a book.
there is no marketing etc in this book. it is by far the best book on the topic. it covers only bitcoin, i.e. no etherium/smartcontracts etc, but it does that really well. and in fact all the other blockchains are more or less the same
Why so hateful? What does having autism have to do with this? I don't really like the quoted piece from the preface either, and even if the author has autism, what does it matter? Isn't it more fair to people with autism and more powerful with regards to your dislike to the author to just not like the author based on that you don't like him as a person? That way you don't insult everyone with autism and you insult him more.
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'?[1]
I second this. It's good both as an introductory book for someone new to blockchain and for someone with more experience looking to round out their knowledge.
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)
Compiled these resources while building my first smart contract. I can't promise they're the best, but I can promise I built something that works following these resources + learned a ton:
Could someone offer a quick explanation as to what kinds of things there even _are_ to learn about blockchains? I mean from a conceptual user perspective of "let's use blockchain for my next product", not from a Bitcoin-dev perspective of "how do we fix this thing in our blockchain implementation".
The key concepts to think about when trying to decide whether you need to use a blockchain are:
- 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.)
Disclaimer: I've mostly absorbed this stuff through osmosis and lazy web searching, but I thought I'd take a shot with my understanding and someone can correct me if I'm mistaken.
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.
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).
Those are in line with my understanding too, but I'm asking what is there to learn about blockchain technology, not what the use cases are. (That's actually also a question I have, but a separate question to me.)
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?)
> What else _is_ there to learn about this that people are looking for?
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.
Based on my cursory understanding of the topic,
The Merkle tree has been around for a while, but Satoshi figured out how to use that to achieve decentralization, and consensus building. If you ask me, that's quite revolutionary.
Yes, the blockchain is just a gigantic DAG, but adding and deleting nodes on the graph is where the crux of the matter is I guess. I am starting to understand the logic from a currency perspective. Still trying to understand how the same translates to smart contracts.
Is there more to consensus and decentralization than just pinging a few other computers and picking the longest chain you find?
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.
Something can be "revolutionary" and made up of pieces not in themselves groundbreaking. Linux was revolutionary and it was just a Unix clone for IBM PCs.
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).
Here's a piece demystifying what a blockchain can be used for (vs. not) with intro references: https://blog.andreacoravos.com/myth-busting-can-a-blockchain.... It's written using healthcare use-cases as frame of reference, but applies to most industry implementations.
So (as I said in a sibling comment) my question wasn't "what can it be used for", but rather "what concepts are there to learn about it that could help me decide what to use it for".
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".
You should ask the people doing healthcare with blockchain, or whatever it is you're confused about. I agree, oftentimes they just have no idea what they're talking about. Sometimes they do though. It's worth noting that I think a few of them expect to depend on not-yet-completely-implemented "infrastructure" projects (off-chain computation, off-chain storage, prediction markets, private transactions, cheaper transactions). However since these infrastructure projects are still in a research stage I don't think it's reasonable for you to be able to cleanly split the "conceptual user perspective" from the "bitcoin-dev perspective".
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/
Would also like to recommend this course. The lectures are good, the tasks are ok. It assumes familiarity with cryptographic hash functions and signatures, allowing to keep the focus on bitcoin. In some places it delves into some interesting variations of implementations, like Zcash.
I quickly checked the syllabus, however didn't find smart contracts? Do they go into that in some of the videos? How much time do you think this course takes?
No smart contracts - it's a Bitcoin course. Some of the authors also released a tutorial on Solidity and smart contracts, which you can find on Andrew Miller's webpage.
The Coursera class took around 20 hours end to end.
I read the book, and it was incredible. It went in depth into the data structures of bitcoin, while also providing high level overviews of various cryptocurrency ideas. It really helped me to understand exactly what cryptocurrency is and how it works.
I can second this. It's a book written by capable people who do some research in the area too and they don't unecessarily hype the technology like so many resources you find about cryptocurrencies.
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?
You didn't miss anything, it's very easy to deploy a bug in a smart contract and why anyone using it for anything important should have their contracts be audited by a third party professional(s).
I've posted all my research on the subject here: https://www.insp3ct.re/blog/blockchain-security-reference-gu.... It's focused on the security side of blockchain & cryptocurrencies, but it starts out with a solid primer on how the technology works. I also did a conference talk at DerbyCon on the subject, which is included in the blog post. Should be really good to get you started.
As a quick and visual introduction, I would recommend the great "Ever wonder how Bitcoin (and other cryptocurrencies) actually work?" youtube video from 3Blue1Brown
https://www.youtube.com/watch?v=bBC-nXj3Ng4&t=3s
Also an important question: How to get quickly tokens for a ETH test network to be able to do anything. Last time I tried I wasn't successful because all these places where you could get some free tokens didn't work and the only thing possible was to mine them yourself which still took a day or two.
Contracts page on Bitcoin Wiki [0] is classic, unfortunately to understand most of it one has to know how script and various extensions (lock time etc.) work. Generally I'd advise reverse engineering how Bitcoin works, something like this [1] in JavaScript. There is also high level description of some contract types [2] but it's basically the same content as on Bitcoin Wiki.
Start out with Bitcoin, and make sure you understand it well. For example it has its own stack-based language (mini smart contracts of sorts), you need to understand how that works, the different types of payments such as P2SH, etc.
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.
Most of the grit of blockchain work is in the flows and practices used to build apps / dapps around existing blockchains. There aren't any books that you can read or comprehensive Medium blogs that cover this content.
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 second the references to "Mastering Bitcoin", and also add my blog post "Getting up to Speed on Ethereum" [1] that takes you from "I kinda understand bitcoin" to "I understand ethereum at a deep level and know about the big projects being built on top of it" over a few days.
W3kit let’s you interact with smart contracts and deploy your own Ethereum node with ease. This way you can focus on writing and testing smart contracts and not the underlying infrastructure.
The blog also has tutorials to get you started and teach Ethereum concepts.
It looks basically just like a Git repository. Mining is like competing for a chance to merge a bunch of other people's commits (because you get a "commit fee" for each of them). And you always want to merge into the longest repository, because otherwise you're receiving those commit fees in a fork that's unlikely to be cared about.
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.
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”
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
Expose core concepts about the blockchain and the Ethereum platform that are valuable to enterprise and how companies can leverage that using web technologies
Check out the blockstack stuff. They have a to-do list tutorial available. Decentralized app development is kinda an etherem vs blockstack situation right now.
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.