去中心化应用,或者叫DAPP,是一种不依赖于中心化服务器的应用。相反,DAPP使用像是区块链和预言机这些Web3技术,来实现自己的逻辑和后台功能,具备不可篡改和安全的特性。
去中心化应用是什么?
与传统的App在中心化服务器运行后端代码不同的是,DAPP的后端代码是运行在区块链上的。当然,DAPP的前端代码和UI可以使用任何语言开发,可以部署在任何服务器上与后端逻辑相交互。
由于将后端逻辑置于高度安全、防篡改的智能合约中,DAPP享有许多传统Web2系统无法获得的优势:
因为DAPP可以通过安全性很高且不可篡改的智能合约来承载后端逻辑,所以DAPP有很多Web2系统中没有的优势:
不会宕机
隐私性更强
抗操纵
在最小信任环境下执行逻辑
然而,这些优势也带来了对应的缺点。因为代码是部署在区块链上,这些逻辑默认是无法修改的,所以DAPP的维护难度比较高。除此以外,因为代码是运行在分布式网络中,而不是中心化服务器,所以性能会比较低。另外,由于用户需要有Web3钱包并且通过有足够的加密资产来支付手续费,所以用户体验也会下降。
DAPP组件
DAPP的组件会有三个不同的类型:智能合约,前端逻辑(UI)和数据存储。
智能合约
智能合约存储了DAPP的业务逻辑和当前的状态,这个是DAPP和传统网络应用的最大区别,也正是因为这一点让DAPP具备了以上提到过的优势。
前端/UI
尽管后端逻辑需要开发者完成智能合约代码,并把它部署在区块链上,但是在前端,开发者还是使用标准的网络技术,比如HTML和javascript,因此开发者可以使用自己熟悉的工具,库和框架。客户端的UI通常通过Web3.js和Ether.js与智能合约交互。像是对信息进行签名并且发送给智能合约这些操作,通常是通过浏览器的Web3钱包MetaMask完成。
数据存储
大多数应用需要存储数据,但是因为区块链分布式的特点,在链上存储大量的数据效率很低,而且非常贵。这也是为什么许多DAPP需要使用IPFS或者Filecoin这样的链下存储服务来存储数据,只让区块链存储重要的业务逻辑和状态。
当然你也可以选择传统的云存储服务,然而还是有很多开发者选择分布式存储,因为区块链应用可以提供最小信任的特性。