上一篇文章《如何成为以太坊开发?(一)》中,我们学习到如何使用区块链钱包连接以太坊网络,以及区块链钱包助记词,公私钥,平台币和合约币等概念。有了之前的基础,我们再继续往下学习。

以太坊的所有交易记录都可以在浏览器中查询到,这个浏览器在国内是需要科学上网的,如果是国内的话,可以使用这个浏览器地址。浏览器的数据是从链上同步下来获取写到数据库,前端直接从后端的数据库接口获取到的,所以,浏览器的所有数据都是链上的真实有效的实时数据。在浏览器中,我们可以看到有区块高度,区块哈希,区块时间戳,代币总量等非常丰富的数据信息,这些数据信息正好就是链上的所有数据信息。

不管是以太坊链还是其它的链,区块链上的数据永远都在出块,作为计算机内的矿工永远都在等待打包交易,所以我们能够实时的看到区块链的区块高度一直在递增。之前我们就讲过,区块里都是数据,那么每个区块高度都存在的大量的数据信息。

区块链上的每笔交易都会返回一个交易的哈希值,这就相当于现实生活中在银行转账的流水,通过这个哈希值,我们就可以查询到我们具体交易的具体数据信息,包括发送人,接受人,发送了什么,发送的时间戳等等。

截止至此,我们已经完全能理解以太坊的运作,规则,以及一些常用的概念,数据了。接下来,作为技术开发,我们要成为以太坊开发者需要掌握哪些技术栈呢?

不管是前端开发还是后端开发,我们一定要掌握的就是以太坊的web3库。那什么是web3库呢?web3库可以分为支持nodejs语言的web3.js库,支持java的web3.j库,支持python的web3.py库。所以,作为vue前端或者是react前端开发,我们一定要掌握web3.js库的使用。而对于后端而言,就需要要求后端任意选择自己拿手的编程语言了,如果本来是nodejs开发,那么web3.js库就可以很轻易上手,如果是java开发,那么web3.j库就可以很容易上手,又或者如果是python开发,那么web3.py就可以很容易掌握了。

除了上述的nodejs,java,python编程语言,官方提供了这种web3第三方库来与以太坊交互外,其实go或者cpp也是可以与以太坊进行交互,只是官方没有对应这两种编程语言的web3库,在与以太坊做交互的时候,就感觉没有官方提供支持有web3库的语言那样使用起来这么的方便直观。

当我们懂得了使用web3,使用支持的编程语言去跟以太坊去交互了。接下来,我们还的学会智能合约语言,前面我们有提到过,solidity,python,vyper,cpp都可以编写智能合约,而且,我们还需要学会使用智能合约在线编辑器。有了这些基础,我们就可以开发我们自己的智能合约了。solidity是官方推荐的编写智能合约的语言,而且写起来也很容易上手,推荐大家学习这门语言。再往深一点学习以太坊的合约编程的话,我们还需要深入学习下内联汇编语言。在掌握了智能合约编程后,更深一点,我们需要学会合约在EVM虚拟机里编译部署的底层原理。智能合约的编写,不像其它的编程,它除了讲究数据结构的优化外,更注重的是合约编写的安全性,因为合约部署到链上后是无法修改的,只要部署成功了,合约都将按照代码的特定逻辑自动运行,无法干涉。再则,在合约领域,代码都是开源的,所以,为了防止攻击,代码的安全性是非常重要的。

之前我们提到以太坊是有测试网络的,所以,当我们需要做应用的时候,我们通常都是先利用官方的测试网络先测试运行代码,调试逻辑,当所有逻辑都符合预期了,才会安排在主网上线。区块链的所有交易都是需要扣取平台币作为手续费的,那测试网络当然也是要的,那么我们就得到对应的水龙头去领取对应网络的测试平台币,只有拥有了测试网络的平台币,我们在发送交易的时候才有手续费可以抵扣,交易才会上链。

因为水龙头获取平台币的数量有限,另一种方法是,我们之前讲过私有链,私有链是私有的,数据是不公开的,那么我们可以自己搭建一条以太坊私有链,这样我们需要多少币就完全取决于我们自己了。但是这种方法之前我们也讲过,搭建一条私有链也是比较繁琐的,因为链不断的在出块,这对我们服务器的性能来说又是一笔开销,所以,我们通常不这样来测试。

官方给我们提供了ganache网络,这个网络模仿了以太坊网络,也默认给我们定义了一些平台币,所以,我们也可以利用它来进行测试,也就不需要我们自己手动去创建私有链了。

上面我们讲到编写智能合约,那么针对智能合约编写完成后,我们除了使用智能合约在线编辑器对代码的逻辑进行调试外,我们更加需要使用后端编程语言,连接上以太坊网络,然后使用truffle测试框架,或者使用hardhat测试框架,foundry测试框架对代码的逻辑进行深度的测试。所以,我们还得掌握这三种合约测试框架。

如果掌握了这两节所说的技术知识点,那么我们就已经完全可以成为一名合格的以太坊技术开发了。别着急,有了这些基本的技术知识体系后,再接下来的学习中,我们会一点一点去尝试一些示例的开发,让我们一起再往下学习吧。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注