Crypto Market Commentary
5 February 2020
Doc's Daily Commentary
The 5 February ReadySetLive session with Doc and Shyler is listed below.
Mind Of Mav
How To Become A Blockchain Developer Part 2
This is part 2 of our guide on learning blockchain development in 2020. If you missed the first part, go here: https://readysetcrypto.com/rscdpremium-february04_2020/
To understand the economics and mechanics of Bitcoin mining, I recommend watching the lecture on Bitcoin mining in the Bitcoin and Cryptocurrencies Princeton course.
If you’ve gotten this far, you should understand Bitcoin well enough to walk through a Bitcoin block header and understand what each of its components mean. You should also be able to play around with a Bitcoin block explorer and navigate raw Bitcoin transactions.
Here’s some extra reading that should keep you busy:
Mechanics of Bitcoin: UTXOs and Bitcoin script (Bitcoin script is not super important, just know roughly what it can do)
Bitcoin scalability problems, which is the source of most of the contentiousness in the Bitcoin ecosystem.
You should have an idea of why Bitcoin folks argue so much about the block size.Segregated witness, a.k.a. SegWit, not essential but it comes up a lot.Lightning Network, one of the more important scaling solutions for Bitcoin, also generalizes to other blockchains
Bitcoin energy consumption index (at the time of publication, Bitcoin mining consumes as much energy as all of Peru)
Insightful essay by Gwern on the scrappy inelegance of Bitcoin
Jameson Lopp has a wealth of other resources on Bitcoin if you want to go deeper down the rabbit hole.
With those concepts under our belt, let’s dig into some blockchain development!
By now, you should have a basic understanding of how blockchains and proof-of-work can achieve distributed, Byzantine fault-tolerant consensus within a peer-to-peer network. Bitcoin is a prime example of this.
But a payments network is just one application you can run atop such a blockchain.
In 2013, Vitalik Buterin, the creator of Ethereum asked: what if you used a blockchain to implement a decentralized computer?
First, a refresher on Ethereum:
In Ethereum, you pay miners to execute your programs on this distributed virtual machine. This means you can perform arbitrary computations, using a Turing-complete programming language (unlike Bitcoin script). Obviously that includes payments-related applications, so Ethereum enables a superset of Bitcoin’s functionality and has birthed a renaissance of innovation.
Essentially, Bitcoin is a worldwide payment network, whereas Ethereum is a worldwide computer.
To run our computer, we need to tell it what to do. Hence, we finally arrive at smart contracts, the name for programs that run on a virtual machine, such as the Ethereum Virtual Machine.
A smart contract can interact directly with the blockchain’s cryptocurrency in accordance with the execution of a program. In other words, you can create financial contracts that automatically enforce themselves. It’s a wild idea, and all sorts of sci-fi futuristic stuff you can do once you embrace this programming model.
This is a really good time to introduce or reinforce your understanding of two key components of any programming: conditionals and loops. Here is a good guide that walks through them in a simple manner. Yes, the syntax is in Python, but Python is a great language to get familiar with, especially if you’re new, because it’s very easy to read and write.
Back to Ethereum. Based on the many different use cases built out of Ethereum, such as ICOs, STOs, and DeFi, if you’re doing blockchain development, you’ll be writing code for Ethereum smart contracts. (Even if you’re not, it’s essential to understanding what’s going on in this space.)
To start, here’s a lengthy but excellent overview of the Ethereum yellow paper and its internals, by Preethi Kasireddy. Ethereum uses an account model rather than Bitcoin’s UTXO model — you’ll soon see why this makes it easier to write smart contracts.
Now, let’s cover Ethereum’s code.
While there may be an effort to replace or outgrow Solidity in the future, especially following the rollout of Ethereum 2.0, for the time being, it is the beating heart of Ethereum. Its nature of being a proprietary language has helped maintain the exclusivity of blockchain developer supply and the high average per hour rate for freelancers.
Vyper is a parallel language to Solidity that may gain traction in the future, but as it stands it is not a replacement for Solidity. Because Vyper is not yet Turing-complete and lacks much of the feature set of Solidity, it is still on the fringes of Ethereum development.
To get your first exposure to Solidity development, I recommend working through all of the CryptoZombies tutorial. It’s a delightful and high-quality Codecademy-esque tutorial that will teach you the basics of Solidity programming.
One of the most popular smart contract development suites is truffle, which provides tools for smart contract development. Truffle has some guides on use here. Another option is to use Remix, which is an in-browser Solidity editor and compiler — it’s basically the training wheels of Ethereum development, so I recommend working through the rest of your practice in Remix or Truffle.
One thing to mention is that, as a smart contract developer, you must treat security as paramount. There’s no “move fast and break things” in smart contract programming. That means any code that handles significant flows of money should be run through static analyzers like Oyente or Securify, tested thoroughly, and then audited by an experienced smart contract auditor. You should also try to rely on pre-audited components, such as OpenZeppelin’s open source contracts. Here’s a cool guide on using Truffle and OpenZepplin to build robust smart contracts.
To strengthen your security chops, I recommend working through The Ethernaut by OpenZeppelin, a game where you find and attack vulnerabilities in smart contracts. Many of them have you replicate real attacks against smart contracts that have occurred in the wild.
Once you make it past that, I strongly recommend reading the entirety of Smart Contract Best Practices, compiled by ConsenSys. Expect to revisit this document many times over in your smart contract programming career.
Ultimately, there is no silver bullet to this practice … except to practice. Programming is a skill that requires experience and iteration. It’s not easy and requires lots of dedication to learn.
But, gaining even a small understanding of blockchain development will open up a world of crtical thinking for you. You’ll be better able to see past hype and nonsense that is often peddled to those who don’t know better.
Keep learning and tryo to stay up to date with the latest development trends, as they’re always changing.
Getting A Job
As I said before, blockchain startups are hiring like crazy. If you’ve actually gotten this far and have done even half the things I suggested, you are probably already employable in this space. AngelList did a great writeup on how to get a job in the crypto space.
There are several good aggregators for blockchain-related job postings:
ConsenSys jobs (Ethereum venture studio with many projects under their umbrella)
Press the "Connect" Button Below to Join Our Discord Community!
Please DM us with your email address if you are a full OMNIA member and want to be given full Discord privileges.
An Update Regarding Our Portfolio
We are pleased to share with you our Community Portfolio V3!
Add your own voice to our portfolio by clicking here.
We intend on this portfolio being balanced between the Three Pillars of the Token Economy & Interchain:
Crypto, STOs, and DeFi projects
We will also make a concerted effort to draw from community involvement and make this portfolio community driven.
Here’s our past portfolios for reference:
RSC Managed Portfolio (V2)
RSC Unmanaged Altcoin Portfolio (V2)
RSC Managed Portfolio (V1)