通过学习Solidity和开发堆栈,就可以同时精通多个区块链。从以太坊,到Polygon, Binance Smart Chain, Avalanche等等,Solidity涵盖了所有这些。
这个路线图是一项长期投资,不是我们在一天内可以完成的事情。但是按照这里介绍的方法,我们将学习所有的基础知识,包括先进的概念。
废话少说,直奔主题。
CS50:计算机科学概论
根据目前自己的技能水平,可能首先需要对CS进行全面了解。
哈佛提供免费的CS50,这需要花费一段时间,但值得。基础至关重要,特别是因为稍后将学习的许多高级概念建立在它们的基础上。
freeCodeCamp
JavaScript是以太坊生态系统中许多工具的基础。在学习Solidity之前,我们应该对JavaScript有一定的了解。
至少需要在这里学习JavaScript课程。这也将花费相当长的时间,但是了解JavaScript也会帮助以后学习Solidity。
Public Key Cryptography
区块链的核心是公钥加密。我们应该了解它是什么,它是如何工作的,以及为什么以后要做的事情是有意义的。
这个视频是一个很好的介绍。别忘了做些笔记。
Cryptography Digital signatures
使用密码学,需要开始签名消息和验证身份。区块链经常使用它。没有签名消息,就没有安全交易。
例如,本文将使我们更好地了解交易是如何启动的,以及为什么这样做是安全的。
区块链上的哈希是什么?
哈希是区块链使用的一个核心概念。作为一名智能合约开发者,我们可能也会经常使用它。
本视频很好地介绍了哈希算法及其在区块链中的应用。像以前一样,记笔记。
区块链定义
现在知道了密码学实际上是关于什么的,是时候了解更多关于区块链的一般知识了。区块链将是我们工作的地方,所以我们最好清楚我们将使用什么。
以太坊是如何工作的呢?
了解以太坊是非常有必要的,主要是因为需要努力在未来能够使用类似以太坊的区块链进行编码。读完本文时,我们就将对以太坊有一个大致的了解。
这是最后一个理论材料了。当完成这些之后,就将能够再次进入代码。这一次,我们将使用 Solidity。
The Hitchhiker’s Guide to Smart Contracts in Ethereum
是时候将我们的脚趾浸入 Solidity 的水域了。虽然这个指南已经有点老了,但这个指南指引我们最终完成我们的第一个智能合约。
Solidity对我们来说可能是新的,所以最好是真正地消化学习材料。
Crypto Zombies
CryptoZombies是一款游戏,但它教会我们Solidity。在本教程中,我们将编写更高级的逻辑并熟悉该语言。
Time-locked Wallets: An Introduction to Ethereum Smart Contracts
是时候进行更多练习了。本教程将引导我们创建一个完整的dApp,包括我们自己的ERC 20代币。
以本课程为契机,更深入地学习 Solidity 并应用以前学到的知识。实践就是一切,因此在 Solidity 中编写代码的所有机会都是宝贵的。
以太坊dapp开发的最终介绍
这是一个关于dApp开发的系列视频。专注于智能合约,我们将获得更有价值的Solidity实践。
Ethernaut
Ethernaut是另一款教我们Solidity的游戏。这篇文章主要关注安全性,这是一个对智能合约开发者非常重要的话题。
安全性实际上是目前智能合约开发中最大的问题之一,这也是为什么我们应该非常密切地关注这个问题并做很多笔记的原因。行业喜欢那些知道自己在做什么的开发人员,他们也会高度重视在智能合约安全方面有经验的人。
ethgas
我们编写的每一行代码都会对用户产生影响。他们支付 gas 调用我们的智能合约的功能。所以是时候了解gas是什么、为什么和如何产生的了。
我们现在又有了一些理论,而且是一个非常重要的理论。理解gas的概念,可以帮助我们更高地评价好的代码设计,并且它有希望在我们编写Solidity时触发不同的思维过程。
Blockchain Oracles, Explained
我们不能在区块链上做所有的事情。所以是时候学习Oracle了,这是智能合约与外部世界沟通的一种方式。
Oracle是一个先进的概念,每个Solidity开发者都应该理解。了解Oracle是一个相当大的优势。我们以后要做的项目将或多或少地与他们接触。
合约 ABI 规范
每个智能合约都有一个ABI。当有人想要使用我们的合约时,他们需要知道ABI,我们也应该知道我们在那里实际创建了什么。
在我们已经构建了相当多的合约之后,现在是时候了解我们实际创建的内容了。ABI是区块链客户端使用的核心。没有ABI,就没有客户能够调用链上的合约。
Keccak
Keccak是Solidity开发人员的重要哈希算法。我们会经常使用它,所以我们最好知道我们在使用什么。
Hardhat
是时候选择我们要使用的堆栈了。
推荐的开发环境是:Hardhat。
仔细阅读文档,了解关于这个以太坊开发环境的更多信息。现在我们可能已经明白为什么一开始必须学习JavaScript。Hardhat和其他许多Solidity工具一样,是用JavaScript实现的。
Waffle
测试是至关重要的,特别是对于智能合约。
我的建议:Waffle。
Waffle是驱动测试的引擎。它使我们能够编写JavaScript并作为客户端测试智能合约。
ethers.js
除了Waffle,我们还需要一个客户端库来调用我们的合约。
我的建议:ethers.js。
ethers是一个缓慢完成堆栈的库。
OpenZeppelin
OpenZeppelin提供了许多已经实现的有用的标准。
许多专业项目都经常使用OpenZeppelin。
Ethereum改进建议
以太坊已经定义了许多标准,尤其是在代币方面。标准化的A(B/P)Is是使生态系统正常工作的关键。把它们都浏览一遍,学习最重要的几个,比如ERC20, ERC721等等。
Solidity Patterns
既然我们可以在不使用浏览器的情况下自由构建内容,那么现在就可以在此过程中构建和学习重要的Solidity模式了。
模式可以应用于某些地方,并帮助我们以可识别和可维护的方式实现特定的目标。这是在我们扩展到创建自己的项目和使用自己的想象力之前,我们应该真正了解的最后一件事。