以太坊区块链最大的特定之一,开发者可以使用基于区块链的技术来开发去中心化的应用。而web app 架构和技术是很多区块链学习者熟悉的技术。本文尝试从去中心化应用的架构与开发,与web 应用技术进行比较,从而得出它们之间的异同。主要目的是让区块链的爱好者更形象具体地去理解以太坊区块链,智能合约,以及去中心化的应用。本文会先从架构开始进行对比,然后再从开发过程进行阐述。
架构
文章图片
【区块链|去中心化应用Dapp和web 应用架构对比】如上图所示,去中心化应用通过http rpc访问智能合约,发送交易,交易经矿工打包后确认后,记入区块链,并返回响应消息。而常见的web应用的架构与之非常的相似,UI发送http请求,请求的信息,经过web服务后,请求的信息记入数据库,web服务向客户端返回响应的消息。
开发过程
下面将比较这两种应用的开发过程。
去中心化应用的开发过程
1.根据业务场景编写智能合约,编写完成把合约发布到区块链上。
2.编写Dapp的 UI界面,使用web3js,经过http rpc协议访问智能合约。
3.Dapp发送的每一笔交易,导致合约状态变化,会自动永久记录到区块链上。
Web 应用开发过程
- 编写web 服务,发布web服务。
- 编写UI界面。
- 实现数据持久化。在Web服务里,人工开发实现数据持久化到数据库。
相同的是:
Dapp与web app整体架构非常的相似,从功能上将,我们甚至可以把智能合约看作是web 服务一样去访问。
如果把智能合约和web service 看作业务逻辑层,那么,UI层可以使用一样的web界面,经过http协议与业务逻辑层进行交互。并且经过业务层处理后,数据会被持久化,dapp记录到区块链上,web 应用把数据保存数据库,区块链的底层同样是数据库。
不同的是:
1. 界面逻辑,dapp实现了http rpcweb3js与智能合约进行数据交互;而web app 基于ajax库与web服务进行交互。
2. 业务逻辑层:智能合约运行在evm上的,其与系统资源完全隔离的,也智能合约不能访问系统的文件,网络。而web 服务不但可以访问到文件,网络,甚至可以访问外部的服务。
3.数据持久化:智能合约拥有独立的存储空间,内存和堆栈。合约变量状态自动地被记录区块链上被持久化。而web服务需要人工开发实现数据的持久化。
4.web 应用不具备区块链技术特性。智能合约一旦发布即不改更改。区块链数据不改篡改,不可伪造。分布式系统共识算法等特点。
推荐阅读
- 推动NFT走出监管困境,BSN推出支持NFT基础设施网络
- JavaScript|JavaScript: BOM对象 和 DOM 对象的增删改查
- 腾讯|SaaS的收入模型有哪些(终于有人讲明白了)
- 架构|架构师之路(二)程序员眼里的架构师
- 程序员|DevEcoStudio的及其传感器的使用,闭关在家37天“吃透”这份345页PDF
- java|阿里工作8年,肝到P8就剩这份学习笔记了,已助朋友拿到10个Offer