Go Ethereum源码学习笔记
前言
这个专栏的内容是免费的,因为自己这边都是基于开源库和开源内容整理的学习笔记,在这个过程中进行增删改查,将自己的理解融入其中,所以这里用开源的精神分享给大家:Free software, free knowledge。当然,开源精神和软件付费/知识付费并不冲突,而是求同存异。大家觉得不错的,可以点个关注和订阅。
源码开源地址:
学习笔记的代码来自以太坊源码(上述开源地址Go Ethereum),学习笔记的内容主要参考理解以太坊(上述开源地址Understanding-Ethereum-Go-version),基于上述开源项目进行的学习和增删改查。
这一篇主要是走出第一步,之前一直都想深入研究以太坊的Go源码,但是总会有其他事情插入进来,以致于都没有完整把源码看一遍。总得给自己一个开端,然后把自己学习的每一步都踩出一个脚印来,这样做可以让自己更踏实的完成这个项目的学习。
下面是觉得《理解以太坊》写得比较好的两段文字,摘抄下来,大家有兴趣的也可以阅读原文,前面给出了开源地址。我所做的就是提取出比较好的内容,结合自己的理解,使其更加精简。
时代的弄潮儿: Blockchain
Blockchain 最早作为支撑 Bitcoin 结算的分布式账本技术,由中本聪在比特币白皮书提出,至今已经过了十几年。在这十几年中,随着加密货币价格的飞涨,区块链社区的参与人数不断的增加,大量的来自不同背景专业人士给 Blockchain 这一概念源源不断的注入新的想法。随着新的思想持续的涌入,区块链技术的边界不断的拓展,逐渐成为了融合了数据库,分布式系统,密码学,点对点网络,编译原理,静态软件分析,众包,经济学,货币金融学,社会学等多个学科知识的一个全新技术领域。在源源不断的新技术催化下,Blockchain 也逐渐从小众的去中心化技术社区逐渐走向了主流社会的舞台,至今仍是当下最热度最高,技术迭代最快,最能引起社会讨论的技术话题之一。在 Blockchain 原生的 decentralized 的思想的影响下,市面上绝大多数的 Blockchain 系统都已经开源,并以开源的形式持续在 Github 上维护。这就为我们提供了一种的极好的学习 Blockchain 技术的方式: 结合文档,基于源代码,理解和学习系统的设计思想和实现原理。
为什么要研究以太坊& Go-Ethereum 的原理
从基础建设的角度看,随着网络基础建设的不断完善,网络带宽增加和通信延迟下降的趋势将会持续。伴随着存储技术和分布式算法的不断发展,未来软件系统的运行效率将会持续的提高,并且会逐渐逼近硬件设备的性能极限。这些技术的发展对构建大规模去中心化应用带来更大的确定性。在未来的五到十年内,云端服务/去中心化系统的性能以及覆盖场景一定还会有很大的提升。未来的技术世界会是两极分化的。一极是以大型科技公司(i.e, Google,MS,Oracle,Snowflake,and Alibaba)为代表的中心化服务商。另一极就是以 Blockchain 技术作为核心的去中心化的世界。在这个世界中,Ethereum 及其生态系统是当之无愧的领头羊。Ethereum 作为通用型 Public Chain 中的翘楚构建了稳定强大的生态系统。Ethereum 及其生态吸引到了一大批世界上最优秀的工程师和研究人员的持续的输出。不断的将新思想,新理念,新技术引入到 Ethereum 及其生态中,并且持续的引领整个 Blockchain 生态系统发展。从计算机技术的发展史上看,优秀的平台化的开源项目,例如 Linux,Android,拥有强大的生命力。由于这类项目的代码经过时间的验证,会有源源不断的开发人员基于这些项目的代码库来开发全新的应用。Go-Ethereum 作为 Ethereum 的优秀稳健的开源实现,目前已经被广泛的订制,被应用在了多种私有/联盟/Layer-2的场景中(e.g., Quorum, Binance Smart Chain, Scroll, Arbitrum , Optimism)。不管是哪种场景,Ethereum 的相关代码总是位于系统的核心中的核心位置。因此,作为开发人员/研究人员理解 Ethereum 的设计和实现是至关重要的。