如何在比特元上开发一个DAPP?

原创
1705 天前
1492

公链的爆发依赖于链上生态应用的建设与繁荣,通过链上应用将直接链接用户与区块链,最直接体现区块链公链价值。

链上应用就是我们通常所说的DAPP(Decentralize application)去中心化应用。

那什么样的应用,能被称之为DAPP呢?其实在计算机新生之后有限的几十年里,App(应用程序)本身就经历好几代演变与发展。

初代,单机应用

一个应用程序的所有元素都存放在一个独立的例程内部,在无需网络情况下也可独立执行。举个很简单的例子,小伙伴小时候玩过的插卡红白机如超级玛丽、魂斗罗就是经典的单机应用程序。

交互,网络应用

随着互联网的发展,应用程序可以通过客户端 - 服务器的模式,进行协同交互,应用体验和程序能力爆发式提高。代表应用如CS,红色警戒这类传统的网络游戏

稳定,分散应用

互联网进一步发展,网民用户也呈指数级增长,需要保证App在较高服务的同时,满足程序本身的稳定性、安全性。此时分散应用程序发展起来,应用程序的组成元素不再依赖单一节点而是分散到N个节点,这样即使在少数节点挂掉的情况下也不影响App的正常使用;如微信,淘宝等国民级应用。

共享,P2P应用

基于P2P网络构建运行的应用,App的组成分散到N个节点,节点与节点之间直接通信,数据存储、业务执行由各个节点协作执行,目前常见的有BitTorrent下载,区块链应用等模式。

应用类型的优劣特点对比:

DApp的定义

透过App的发展历程,我们可以知道DApp就是P2P应用的一种,其本质就是基于区块链网络的“智能合约”,只需要在其外层包装一层接口,就可以让用户通过客户端使用。

传统App组成可以简单理解为:

App= Frontend + Server,前端界面+中心化网络服务

那么DApp则可以简单理解为:

DApp = Frontend + Contracts,前端界面+区块链智能合约

传统App的Server可以是单节点/分布式/云中的服务节点,它的特点是集中控制,由特定的一个或多个公司/组织/个人所有,属于集权模式,它的所有者可以控制应用的整个逻辑,所以被称为“中心化应用”。

而DApp中的Contracts(智能合约)则是部署在区块链网络中的程序逻辑,它运行在区块链网络中的所有节点内,各节点逻辑完全相同,而且节点所有者可以是任何人,一旦合约部署完成,它的行为不受任何特定的人控制,所以被称为“去中心化应用”。【想知道智能合约更多详情点击蓝字跳转】

在比特元如何实现一个DApp 设计和开发

一个典型的DApp组成如下:

前端:

用户端,可以是手机端App,也可以是网页,甚至可以是命令行,一般是直连区块链节点的RPC服务接口。

服务端(可选):

类似中心化应用的服务节点,这里主要是封装DApp自己的服务接口,下层对接区块链,上层对接用户端,为了更好的用户体验,也可能会做一些数据状态缓存。

区块链端:

常规区块链节点,对前端或服务端提供区块链的操作接口服务,如发送交易、调用合约、查询结果等动作。

而一个常规的DApp开发流程如下图所示:

流程主要包含前端和合约两部分内容的开发,合约最终是部署在区块链网络上的,DApp的执行通过链上虚拟机执行,结果链上存证,前端为用户交互界面。

不通过用户前端,使用区块链的命令行接口依然可以调用合约,实现DApp的完整逻辑。但是用户门槛太高,所以,一般正式的DApp都会提供前端供用户交互。

比特元DApp开放的扩展性

比特元DApp开发兼容多种开发语言EVM 兼容以太坊智能合约、WASM兼容EOS智能合约、JSVM兼容Javascript智能合约,其他公链DApp可无碍移植到比特元区块链网络运行。