主页 > 安卓怎么下载imtoken钱包 > 如何学习以太坊代码

如何学习以太坊代码

安卓怎么下载imtoken钱包 2023-04-18 06:49:59

作者| 秘猿科技/蒋今阳

2018年7月14日如何获得以太坊,秘猿科技区块链工程师蒋金阳在《以太坊开发者入门指南》中分​​享了关于“如何实现一个简单的以太坊”的演讲。 《IT大咖谈》作为独家视频合作伙伴,经主办方和主讲人审核后授权发布。

以太坊是一个社区驱动的项目,并且不断更新,以太坊基金会一直鼓励多种实现以避免网络故障。 那么如何实现以太坊呢? 本次分享介绍了如何理解以太坊规范,实现以太坊的主要组件和功能。

为什么要学习以太坊

以太坊联盟和以太坊的关系_如何获得以太坊_以太坊最早怎么获得

The DAO项目相信很多人都听说过。 该项目使用智能合约来完成DAO(去中心化自治组织)功能。 参与项目的人可以使用自己的私钥向项目转入一笔资金,获得相应的投票权。 然后使用投票权对资金的使用进行投票。 虽然该项目最终因为智能合约的漏洞而夭折,但这种用法相对于最原始的区块链应用来说是向前迈进了一大步。

去中心化交易所是区块链的另一个应用场景,其本质是通过智能合约来保障安全。 虽然在资产交易过程中使用一些中心化服务撮合交易流程,但资金始终通过以太坊网络和智能合约由私钥控制。

从这两个案例可以看出智能合约的概念和以太坊的web3.0确实值得称赞。 它们不仅保证了资金和机制的公开透明,也赋予了用户更多的权利。 而这些在中心化服务中是很难实现的,或者说是一种奢望。

如何学习区块链

以此为契机,萌生了投资区块链领域的想法,开始寻找区块链相关的公司加入其中。 玄猿科技是我第一个想到的公司。 这家公司给我印象最深的是,他们的主要产品都在GitHub上,包括区块链产品、钱包、区块链浏览器,许可证非常开放。 不过,由于之前对区块链一无所知,最终还是以web开发者的身份加入,并在试用期间开始学习区块链相关技术。

“Rooting the chain”在我看来是一种比较有效的学习方法。 公司里也有不少人通过“滚链”从web开发转为区块链开发。 简单来说,“滚链”其实就是自己实现一个区块链。 对我来说,既然要做区块链,当然选择二代以太坊作为我的实际目标。

“滚链子”的难点在于需要花费大量的时间和精力,而且最后可能做不成。 好处也是显而易见的。 一个区块链的完整实现过程,无疑会大大提高个人在该领域的开发能力。

最后结果

以太坊联盟和以太坊的关系_以太坊最早怎么获得_如何获得以太坊

上图是以太坊我从头到尾花了3个月时间实现的最终结果。 在实践过程中,我首先看了一下以太坊wiki,里面包含了所有关于以太坊的相关信息。

但是如何获得以太坊,如果你想实现以太坊的核心,你需要看一篇黄皮书。 本书由以太坊技术合伙人编写。 书中正式证明了以太坊核心的EVM部分,包含大量公式。 学习起来相当困难。

然而,这不是最困难的部分。 比较难的是以太坊是一个正在开发的项目,所以没有固定的规范。 在许多情况下,有必要调试现有的客户端以了解当前实践的含义。 当我做到这一步的时候,我会发现虽然要做的事情还很多,但是难度却急剧下降了。 大部分都可以随着时间的推移而实现,我也不再像以前那样不知所云了。

以太坊测试

以太坊最早怎么获得_如何获得以太坊_以太坊联盟和以太坊的关系

Ethereum Tests[1] 是开发者需要关注的项目,因为它是唯一可以追踪以太坊规则变化的项目。 它提供了大量的单元测试来测试以太坊的实现。 只有通过了这个测试,才能算是实现了以太坊的标准协议。

Test里面经常更新的目录不多,也就三四个左右,但是大概有上千个测试集中在里面。 其中BlockchainTests主要是以太坊区块的验证和分叉规则,PoWTestsfuz负责验证共识算法是否符合规定,RLPTests是以太坊的编码库测试。

测试过程

以太坊联盟和以太坊的关系_以太坊最早怎么获得_如何获得以太坊

测试时,先给我们一个json格式的文件(如上图),里面有一些初始值,包括钱包和链地址,balance是二进制钱包余额,代码为空说明这个地址是钱包而不是a contract , storage 是指存储在合约中的数据,然后我们相应地填写我们的初始数据。

以太坊最早怎么获得_如何获得以太坊_以太坊联盟和以太坊的关系

第二步会为我们提供一些输入,比如对于BlockchainTests,它会提供很多数据,我们需要把这些输入到我们的实践中。 根据以太坊的规范,区块的内容会在这个时候执行。 执行后,初始的json文件会发生变化。 接下来要做的是检查更改后的状态是否与测试中的状态一致。

如何理解以太坊的规范

以太坊的规范可以说是我在实践过程中遇到的最难的部分,也是非常重要的部分。 不仅客户端的实现依赖于它,以太坊的相关开发也依赖于它。 但是仅仅从 Wiki 或一些文章中学到的规范是不足以让你完全实现一个区块链的。

以 DevP2P 组件为例。 它是以太坊的底层网络组件,以P2P方式连接节点,为上层应用提供自由通信的能力。

DevP2P规范可以从三个地方获取,包括wiki、黄皮书和EIP。 wiki是对以太坊所有信息的介绍,但是这里的信息可能不会太详细,对DevP2P的描述也仅限于告诉你它是什么,并没有具体的实现方法。

黄皮书主要是EVM的规范,DevP2P之类的网络部分没有涉及。 EIP 是一个社区驱动的以太坊改进提案。 社区成员可以将他们的 EIP 提交给以太坊官方,以展示他们的改进计划。 如果提案获得正式批准,将分配一个 EIP 编号,然后让社区成员参与讨论。 最后到每个客户去实施。 可以说以太坊里面的大部分规范都在这里了,可惜EIP里面没怎么提到DevP2P。

以太坊最早怎么获得_如何获得以太坊_以太坊联盟和以太坊的关系

当以上方法都不行时,我们只能查看官方客户端的代码进行调试,在官方代码中插入一些打印语句如上图。 这也是我使用的方法,逐段打印出geth接收到的数据,并与本地处理代码进行比较。