Learning Ethereum Solidity

The following is my recommendation for learning Ethereum Solidity. (Expanded from an answer I gave on Reddit https://www.reddit.com/r/ethereum/comments/7pcmm4/whats_the_best_way_i_can_start_learning_how_to).

These are the best tutorials I have come across, which are generally (for an ecosystem constantly changing) up to date, and will give you a good foundation of Ethereum Solidity.

Crypto Zombies https://cryptozombies.io

Crypto Zombies is an online tutorial by Loom Network.

Currently at Lesson 6. You build a series of smart contracts for non-fungible tokens (eventually build a dApp in future lessons), think CryptoKitties.

It walks you through Solidity at a nice pace.

Truffle Framework http://truffleframework.com/tutorials/pet-shop

Next up is Truffle, an environment for developing and testing smart contracts.

Pet Shop is an easy to follow tutorial and walks you through the truffle process including a smart contract, tests for the smart contract and a dApp. You also get to use MetaMask (thank you orange fox team).

If you do want to develop smart contracts then you will likely use Truffle.

As an aside, I use Visual Code (https://code.visualstudio.com/) as my code editor.

Open Zeppelin http://truffleframework.com/tutorials/robust-smart-contracts-with-openzeppelin

Once you understand the basics of Truffle it is time to use Open Zeppelin. Open Zeppelin is an open source collection of smart contracts to build upon.

Start with an ERC20 token, then have a look at their token sale smart contracts.

The Open Zeppelin tests are great examples of smart contract testing to use for your own testing.

Infura http://truffleframework.com/tutorials/using-infura-custom-provider

Infura hosts Ethereum nodes, making it easy for you to deploy to a testnet and mainnet.

Try deploying the Truffle Pet Shop Tutorial to Ropsten and use MetaMask to interact with your dApp and host the dApp in a cloud service like Azure to test from other platforms.

Mobile

Mobile will be key for widespread adoption of dApps and Ethereum.

Test your Truffle Pet Shop Tutorial on the various mobile dApp browsers, Trust and Toshi (by Coinbase) are constantly iterating and Status.im will be giving them both a run for their money once mainnet:

Trust Wallet https://trustwalletapp.com/

Toshi (mainnet and dev testnet versions) http://www.toshi.org/

Cipher Browser (Peter J Kim now joined Toshi) https://www.cipherbrowser.com/

Status.im (testnet only) https://status.im/

As an aside, Tokenary https://tokenary.io/ is worth a look to see the mobile interface they did for Crypto Kitties.

Open Zeppelin (Security) https://ethernaut.zeppelin.solutions

Ethernaut is a series of challenges where you will have to teach yourself about smart contract security. Along the way you could use Remix (online smart contract editor and deployment).

Apart from being fun, you will have to read and interact with smart contracts and think about security issues.

In addition, it is worth reading through some of the Zeppelin Solutions smart contract audits https://blog.zeppelin.solutions/ for tips on what not to do and how to improve your smart contract.

Conclusion

Smart contract development is fun, challenging and frustrating all at the same time.

We are standing on the shoulders of giants, so many thanks to the teams and communities at Loom Network, Truffle, MetaMask, Open Zeppelin, Infura, Trust, CipherBrowser, Toshi and Status.im. Thanks for all that you do.

Welcome down the rabbit hole.

Software Engineer (blockchain)

Software Engineer (blockchain)