以太坊学习路线和资源汇总
imToken 是一款全球领先的区块链数字资产管理工具[ZB],帮助你安全管理BTC, ETH, ATOM, EOS, TRX, CKB, BCH, LTC, DOT, KSM, FIL, XTZ 资产,同时支持去中心化币币兑换功能 ...
以太坊学习路线
笔者相对擅长合约安全方面,因此这个学习路线大致是偏向于智能合约开发和智能合约安全,对于很多从事开发的朋友,可能显得比较学院派,不是那么切合工作实际,不过抛砖引玉,欢迎讨论和补充。学习的资源可以在下方的资源汇总中找到,笔者日后将会写合约审计方面的文章。
我们学习的心得、理论基础和源码分析,都会写在仓库里,欢迎交流学习
这下面的内容笔者也没有完全掌握,但是会逐渐的学习,在未来 3-5 年研究生毕业后也许能够在合约安全、安全的区块链系统构建等方面有一定的成就。
第一步:完成简单 DApp 开发
一开始入门就要求做简单的 DApp 可能看起来不合理以太坊和比特币区块链钱包,因为读者可能现在都不知道 DApp 是什么。但是项目驱动的学习将会非常有效,并且掌握的开发技能将会在后续的学习中发挥重要作用。
将会学会的知识有:
编程语言:, , (HTML, CSS)
完成前端与合约交互往往用的 的 API,这是必会的技能。 也不必学的多深入,能够熟练的掌握 /async 之类的异步操作,编写函数和类即可。学习 对于编写合约的测试用例和一些重复工作的自动化非常有帮助。每次实验中不可能重复部署实验环境,而是一次编写,反复实验和调整。
是编写智能合约最主流的语言,也将会是只能合约开发和智能合约安全的基础,是我们后续需要精通的语言。
至于 HTML 和 CSS 本身不难,和区块链关系不大,视自身情况学习,可以弱化。
Linux 的熟练使用
Linux 是以太坊客户端运行的主要系统环境,因为它相对于 有更完善的命令行工具,过去的许多教程也是要么基于 MacOS,要么基于 Linux。这里推荐使用 20.04 长期支持版,这是用的最多的带图形交互页面的 Linux 系统。
区块链入门知识
市面上关于区块链的书多如牛毛,笔者在刚入门时几乎借助 掌阅、微信读书等电子书平台和学校图书馆,读遍了所有中文书籍。可惜的是,笔者发现它们的内容稂莠不齐,甚至怀疑写书的人是否真的理解他所表达的内容,要么毫无洞见,要么写成教材式的死记硬背概念,少有佳作。笔者选出几本觉得还可以的书作为入门的阅读材料。
《精通以太坊》、《区块链架构之美——从比特币、以太坊、超级账本看区块链架构设计》《深入理解以太坊》是可以仔细阅读的,部分内容读不懂也没关系,可以会过来再读。
《深入浅出区块链核心技术与项目分析》、《深入以太坊智能合约开发》《区块链:以太坊 DApp 开发实战》值得略读,浏览内容,了解区块链的方方面面。其中《区块链:以太坊 DApp 开发实战》的中继服务器开发,值得以后掌握 Go 语言和具有一定的源码基础后尝试实践。
除此之外,可以阅读笔者其他的文章,会持续更新。也可以浏览下面的资源汇总,大致的看一遍,建立对区块链的模糊认识。
开发框架和库
实现 DApp 时交易使用 或者 这样的集成开发框架。 主要使用 web3.js 而 主要使用 ether.js,这两个都可以,但是后者最近较为流行。
除了 web3.js 和 ether.js 这样的用 编写的完整的库外,还有其他语言编写的库,如 web3j、web3.py,但是建议和所使用的框架配套。
第二部分:深入合约开发和合约安全
通过第一部分的学习,我们可以假设读者
接下来开始了解区块链的相对高级的主体,注意偏向合约开发和合约安全方向:
[ ] 了解以太坊的字节码、操作码,能供单步调试,观察栈、内存的变化。[ ] 了解合约的内联汇编,直接操作数据。[ ] 根据自己的实际要求,选择是否需要熟悉各种业务代码,例如代币等等
然后,阅读以太坊的源码,建议阅读 geth,因为它时最主流也是最活跃的区块链项目。
对于合约开发方向,深入底层似乎有些有些不必要了,但是对于合约安全来说,接下来的内容可能才算开始“入门”。
[ ] 看懂源码中的 core 部分,从源码实现层次[ ] 掌握合约的常见漏洞和审计工具的使用第三部分:高级智能合约安全研究[ ] 掌握区块链系统态势感知模型,能够设计系统方案,动态、整体地监控链上数据,并且自动分析可能的安全威胁。资源汇总
这些资源主要来自笔者的经历和学习,也参考了许多人的总结,作为自己的系统作结,应该对大家有帮助。
帮助和交流平台
还有一些 服务器,感兴趣可以加入。
优质社区
入门参考智能合约合约教程区块浏览器
一些特殊的浏览器
合约库集成开发工具
+
使用开发环境可以加快重复性任务,例如 主要完成以下工作:
最近升级后功能强大了许多,可以提供本地私链的测试环境,而且还支持其他功能。
其次, 有很多的插件,
官网中还介绍了其他的开发框架:
的堆栈跟踪功能很强大,报错信息相对更具有可读性,而且主网分叉功能也很赞。
- 基于 的开发环境和测试框架。
- 开发环境、测试框架以及与以太坊、IPFS 和 集成的其他工具。
- 在 JVM 上开发区块链应用程序的平台。
SDK - 工具包:一套帮助您开发、编译、升级、部署智能合约并与之交互的工具。
The Graph - 链上信息查询的API
- 平台提供的开发套件。
- 一套专注于以太坊的 CLI 工具,遵循 Unix 设计理念,倾向于可组合、可配置和可扩展性。
看官网朴实的介绍,确实很符合 unix 极简主义的哲学
关于其他集成开发工具的介绍,可以见 2022十大智能合约开发工具
与合约交互的库
Web3.js - 是使用的非常广泛的库,包含完整的合约交互和查询函数
.js - 现在的主流库, 框架也主要用到它。
Graph - 比较新的使用 的信息查询的库,配套有信息查询平台。
- 封装后的 Web3.js 的库, 的配套生态
Web3j - Java 的API
Web3.py - 用于与以太坊交互的 库
DApp 的前端库
前端链接钱包往往需要阅读不同的钱包的文档,然后针对性的写代码,这是重复性的工作,因此有相应的库完成了这个工作。
-Eth - .js + + React 的 DApp 模板
擅长大量状态管理的前端库。
安全审计
这方面的内容,我会在后续合约审计文章中详细说明各种工具的使用和原理。
漏洞分析博客
各语言的区块链开发
以下资源包来自以太坊官网,主要是各种语言参与区块链开发的指导,虽然许多没有翻译,但是仍然很有参考意义imToken官网下载,因此搬运过来了:
根据您的语言选择项目资源和虚拟社区:
底层源码参考参考资料
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。