DAPP:系统架构

321 阅读5分钟

DAPP:系统架构

DAPP是一门入门比较快,精通比较难的一门技术.无论你是一个技术人员还是运营人员,无论你是会前端开发,还是会后端开发,或者从来就没有做过开发,亦或是学生都可以掌握这一门技术,不会有太大的难度.

DAPP 项目组成

DAPP涉及到的技术有区块链基础知识、web3.js库ethers.js库,智能合约solidity,预言机,Graph以及node.js等.

DAPP就是一个加入了可以与区块链交互的应用程序,常常表现为一个web应用程序.

DAPP是怎么运行起来的?到底需要哪些东西来支撑呢?

这就需要了解DAPP的系统架构,只要清楚了DAPP的系架构,你就会知道开发DAPP需要哪些技术,需要什么样的开发人员以及如何协同工作,我们看一下一个典型的大的系统架构,

图片.png

图1 一个简单的架构

图片.png

图2 一个复杂的架构,不需要理解各个部分,后面会说

第一部分 前端

DAPP运行在浏览器里,用户通过互联网可以使用,这个我们普通的web程序没什么区别,比如网站的页面,小程序等等都是这么工作,它就是由一些HTML页面和JS组成.

第二部分 server

这也跟传统的web应用,没有什么区别,它负责提供和处理数据与前端的DAPP进行交互,通常负责数据库的读写、数据加工,以及业务逻辑等工作,它可能是Java、php、go、python等开发语言写的,也就是我们通常所说的后台,以上两个部分合在一起,其实就是我们现在web2.0应用的系统架构,

第三部分 智能合约

DAPP架构与传统web应用架构不同的地方就是多出来了智能合约这部分.智能合约是运行在区块链上的一段二进制代码,部分区块链是可以运行智能合约的,比如以太坊(ETH),差不多90%以上的智能合约都运行在以太坊(ETH)上,所以你主要关注以太坊(ETH)上的智能合约就行了,因为大多数的公链都是借鉴或者抄袭了以太坊(ETH).你开发的智能合约,只要改两行代码就可以移植到兼容EVM的区块链上,以太坊(ETH)上的智能合约通常使用solidity语言开发,编译之后会成为一段二进制代码,然后部署到以太坊(ETH)上.就可以进行调用,这一部分通常成为链端,

第四部分 预言机

一般来说,这三个部分就形成了一个完整的DAPP技术架构,但是为什么架构后面还有一个部分预言机呢?其实,很多DAPP具有一些特殊的场景,需要一些辅助的数据才能完成整个工作的闭环,比如预言机Graph等就能提供一些辅助数据.

智能合约起名叫智能,其实并不智能,它不能主动获取数据,只能被动接受数据,而且他也不会定时执行,撬动它执行的唯一方法就是外部程序调用他的接口.

因为智能合约不智能,那么谁来通知智能合约呢?

自动实时的把结果通知区块链上的智能合约,让他执行操作,至于原理,这样整个系统就形成了一个闭环,自动执行所有的任务了,做到无人值守.

DAPP人员结构

第一部分 前端开发

DAPP前端开发岗位跟现在没有太大的区别,你只要会用两个JS库就可以,一个是web.js,另一个是ethers.js,他们非常简单,其实你只要会其中之一就可以了,因为这两货干的是同一件事,而且功能一模一样,就是写法上有点区别,不知道谁抄谁的,他们都是跟区块链打交道的接口和对象,比如调用智能合约,比如查询账户余额等.所以作为前端开发的,只要会用其中一个库,你就可以理直气壮的说,我会开发DAPP,我是一个DAPP前端开发工程师,但是呢,一个好的前端不能只会用现成的库,还应该知道为什么这么用,怎么用才最好.通常呢,你应该了解一下区块链的基本知识,不求深入,但求广泛.

第二部分 后台开发

如果你以前是个后台开发的工程师,你就啥都不用学,直接就可以说我会加后端开发,因为真的没什么事,你就说我是一个DAPP开发后台工程师,没毛病,因为也没这个岗位,还叫后台开发工程师.

第三部分 链端开发(智能合约开发工程师)

这个是全新的岗位,会的人少,而且水平高的人更少,起码得会熟练使用solidity,然后还得会一堆常用代码库,还要注意安全,另外还得会使用几个框架,比如truffle,hardhat,但作为一个入门的初级开发者,还不需要掌握这么多,慢慢再提高,智能合约看起来简单,其实也没那么简单,因为这是直接跟钱打交道,稍有不慎,满盘皆输.

第四部分 辅助工具开发

指的就是预言机,graph等使用和开发,通常就是由链端或后端开发人员来做,或者两者配合做.不同的业务场景,会有不同的分工,有一些公司专做预言机.比如chainlink,


最后,四个部分全会,恭喜你,你得改名了,叫DAPP全栈开发工程师.

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 21 天,点击查看活动详情