如何成为以太坊开发?(二)

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

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

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

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

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

不管是前端开发还是后端开发,我们一定要掌握的就是以太坊的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测试框架对代码的逻辑进行深度的测试。所以,我们还得掌握这三种合约测试框架。

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

如何成为以太坊开发?(二)相关推荐

  1. 以太坊开发(二)使用Ganache CLI在私有链上搭建智能合约

    以太坊开发(二)使用Ganache CLI在私有链上搭建智能合约 在上一篇文章中,我们使用Truffle自带的客户端Truffle Develop,在私有链上搭建并运行了官方提供的WebPack智能合 ...

  2. 以太坊系列(二)---Ubuntu20.04安装以太坊开发环境并建立私有链

    目录 安装版本说明 环境搭建 搭建以太坊 安装Nodejs 安装Solidity 安装Truffle 以太坊开发 安装版本说明 Ubuntu版本:20.04 Ethereum版本:1.10.1-sta ...

  3. linux以太坊开发环境搭建

    2019独角兽企业重金招聘Python工程师标准>>> 如果你希望马上开始学习以太坊DApp开发,可以访问汇智网提供的出色的在线互动教程: 以太坊DApp实战入门教程 以太坊去中心化 ...

  4. 以太坊开发实战:通过truffle-contract与智能合约交互

    以太坊开发实战:通过truffle-contract与智能合约交互 与以太坊的智能合约交互,除了使用web3.js,还可以使用另外一个Javascript库,就是truffle-contract.tr ...

  5. 以太坊开发入门,如何搭建一个区块链DApp投票系统

    点击关注异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 第一节 概述 对于初学者,需要了解以太坊开发相关的基本概念,另外就是如何构建一个基于以太坊的完整去中心化应用例如一个区块链投票 ...

  6. 在MacOS上构建以太坊开发环境

    以太坊是流行的区块链去中心化平台.作为本文的一部分,你将了解如何在MacOS平台上设置以太坊. 首先需要对区块链和以太坊有基本理解,即什么是以太坊之类的? 工具集 以太坊开发生态系统包括以下工具列表. ...

  7. 第一课 以太坊开发从入门到精通学习导航

    辉哥认为,区块链是人类社会伟大的革命,改变了生产关系.但是作为技术人员,有必要了解全部底层技术和算法吗?依稀记得,以前有些培训机构培训使用电脑时先教五笔输入法,然后才开始学习使用WINDOWS,让很多 ...

  8. 第一课 如何在WINDOWS环境下搭建以太坊开发环境

    目录:https://blog.csdn.net/qq_40452317/article/details/90270046 [本文目标] 根据本文指导,可以在WINDOUWS环境下完成以太坊智能合约部 ...

  9. 第二课 如何在WINDOWS环境下搭建以太坊开发环境

    [本文目标] 根据本文指导,可以在WINDOUWS环境下完成以太坊智能合约部署前的比较环境准备. [技术收获] 如何在WINDOW(笔者以WINDOWS 10为例)环境搭建以太坊开发环境,按照以下安装 ...

最新文章

  1. 腾讯会议又一黑科技,屏蔽超过 200 种会议噪声是如何做到的?
  2. 华为计算黄之鹏:AI开源框架已经到“汽车替代马车”的阶段 | MEET2021
  3. DBCC--CHECKIDENT
  4. 对话MPEG创始人Leonardo Chiariglione: MPEG精神将在MPAI中延续
  5. ubuntu修改服务器端口,服务器环境之4:ubuntu14.04安装tomcat,端口修改
  6. 玩转oracle 11g(28):ora-00064和程序异常终止
  7. r语言算巢式设计方差分析_R语言进行方差分析
  8. MYSQL 二进制还原
  9. 【测验8 编程题】: 程序设计方法学 (第8周)
  10. html代码雨特效代码,html开发数字雨特效代码 - 贪吃蛇学院-专业IT技术平台
  11. 如何录制Gif动态图片
  12. C语言程序入门(零基础入门)
  13. oracle餐馆系统分析,现代饭店管理-试卷A
  14. linux连接蓝牙设备,Linux 下连接蓝牙设备
  15. 电脑计算机打不开显示远程过程,Win10打不开图片提示“远程过程调用失败”的解决方案...
  16. CTFshow-命令执行(4)
  17. 分享十个预加载功能生成器
  18. ubuntu安装串口工具minicom
  19. 【WebGL-iTwin.js】先导篇:用bentley-iTwin.js搭建模型在线可视化平台
  20. 汇编语言乘法和除法指令

热门文章

  1. 题目3:一个整数,它加上100后是一个完全平方数,再加上268又是一个完全平方数,请问该数是多少?
  2. python怎样使用各个日期赤纬_天文数据处理笔记之python(3)
  3. js 动态加版块进页面
  4. CSS Hank兼容浏览器的
  5. 国内物流公司通用Material Number Range
  6. Object,byte[],ByteBuffer之间的转换。
  7. Enhancer是啥
  8. CV_RETR_TREE’ was not declared in this scope
  9. 955 不加班的公司名单,work–life balance (工作与生活的平衡)
  10. 2020 - 04 - 16 个人笔记