优惠论坛

标题: Foresight Ventures: Crypto-Native DApp 架构 [打印本页]

作者: 金色财经小编    时间: 2022-9-5 13:17

作者: msfew@Foresight Ventures

0. Web2 App 架构

当我们开发一个现代化 toC 应用程序的时候, 无论是 Web App 还是 Mobile App 还是 Desktop App, 他们的基本架构都可以用以下三端来概括:

4taD7B20OWnkAavIVSdLGEfkwWP8qPVfAiyHkZ7a.jpeg

从左到右分别是:

为什么软件都需要这三端? 为什么前端不直接连数据库呢? 中间为什么还要有一个后端? 这其实有很多方面的原因:

a) 工程化

开发者角度: 现代化应用的前端没有精力同时处理复杂的数据模型以及视图的状态管理. 工程化的角度而言, 让每个工程师都全知全能地维护一套臃肿的系统是不好的. 除此之外很多的逻辑是不需要前端参与展示的, 比如电商平台的库存等.

架构角度: 每个端都有自己的一套规则和语言去描述数据. 前端用人类能理解的思路来构建页面, 后端用面向对象的语言来操作数据, 数据库使用关系代数语言来访问物理存储. 没有办法规定一套万金油的规则来统一三端. 同时由于语言各司其职, 所以性能侧重点也不同.

b) 通信

协议角度: 观察图中, 可以看到连接三端的两个连接方式是不一样的. 通常 toC 的应用程序前端和后端沟通使用 HTTP 协议, 而后端和数据库则有不同的协议, 如 MySQL 就和 MongoDB 有着不同的协议. 我们可以通过一层很薄的后端 (GraphQL + Hasura) 或者规定新的协议 (OData) 来达到类似前端直连数据库的效果, 也有 CouchDB 这样为这样的通信而生的协议, 但依然没有解决其他的缺点.

数据映射角度: 前端处理 UI, 后端处理对象, 数据库处理数据. 前端与后端的连接使用了 UI 与对象的映射, 后端与数据库的连接需要使用对象关系进行映射.

c) 安全性

数据角度: 因为在目前, 我们所使用的应用越来越多是基于 Web 的应用, 所以如果让前端直连数据库, 那么在浏览器这个不安全且开放的环境下, 很难防住数据泄露和黑客攻击. 数据库理论上可以通过各种鉴权等手段控制数据可见度, 但是后端存在的另一个巨大意义就是确保在可信的环境中, 以设计好的方式运行, 并排除已知的安全性问题.

d) Web2 应用架构给 DApp 的启示

从以上三个角度, 我们分析了为什么 Web2 应用是三端架构, 而这也带给了我们对区块链 DApp 的一些思考:

  1. 工程化: 对应了区块链中的模块化思想. 各个组件各司其职, 存储则可以用存储链, 用户数据则用传统的公链存储. 开发者无需太高的开发心智负担.

  2. 通信: 对应了区块链网络不同的共识机制. 这些不同的机制也让区块链的互通变成难题, 但也有 诸如 Cosmos 和 Polkadot 的互通协议, 尝试去链接整个网络. 但从 Web2 应用的角度来说, 这并不意味着是最佳的解决方案. 数据映射则可以对应面向账户或者 UTXO 的设计模式, 两者在性能, 隐私, 和开发复杂度上各有优劣.

  3. 安全性: 对应了区块链的去中心化与 Verify, Not Trust 思想. 安全性在区块链领域中更为重要, 因此需要可验证, 甚至完全透明公开的方式来对数据的处理和数据的可见度进行调整, 从而实现透明和 Permissionless 的 DeFi, 公开且具有所有权的 NFT, 以及 DApp 最重要的可组合性.

1.Web3 DApp 架构

XFb6V27bqHa0S1pmdmXladEsOzuSWtzRZAN4fUrD.jpeg

大多数的 Web3 DApp 都遵循了如下的架构:

a) Web3 DApp 细化组件

更细化地来说, 完整的 Web3 DApp 的工作流程涉及到更多的组件:

GCq7bzXxS8reMCjPftYK1M0vVNoJgPf0h4WaoCaA.jpeg

b) Web3 DApp 如何做到无后端?

区块链网络上的图灵完备的智能合约的存在, 让区块链能成为最好的 Serverless 平台, 或者说是可以被视作 Trustware 的 World Computer. 应用的数据和后端逻辑都可以在智能合约中实现.

AM1JmtHzXehKOz0mnji9DIrTqbce9BzyzRbjsXPb.jpeg

和 Serverless 函数相比, 智能合约更加优秀, 也造就了比 Web2 应用更加优秀的架构和模式:

但是, 对于一个真正完整的应用来说, 只通过智能合约作为后端, 是无法实现完整的功能的, 因此会需要有 Keeper 网络或预言机等其他组件.

2. Web3 Crypto-native DApp 架构

Web3 DApp 指的是通过智能合约作为后端实现的, 简单的去中心化应用. 要完成一个复杂应用, 可能或多或少会引入中心化的服务, 真正要实现一个 Crypto-native 且 trustless 的 DApp, 则需要在架构上加入新的变化.

Web2 的复杂应用其实也远远不止是我们之前所概括的三端了, 需要非常多模块化, 中间层以及水平拓展的架构拆分.

Wbrp8nHmQ2CgqXTfDTN93oiBOC4cLy3abKXRLd2s.jpeg

a) 前端




欢迎光临 优惠论坛 (https://tcelue.tv/) Powered by Discuz! X3.1