DApps 的全新架构设计:基于 GraphQL 和标准客户端 | ArcBlock 博客

作者: 冒志鸿(ArcBlock 首席执行官、首席架构师)

关于去中心化应用(Decentralized Applications,DApps)的架构,目前我们 ArcBlock 采用了基于 GraphQL 和标准客户端的新型架构设计。

基本思路

1. 后端(Serverside)采用 GraphQL 来提供服务,而不是 REST API。

我们曾经发表《开放链访问协议为何采用 GraphQL》、《GraphQL 将为去中心化网络提供动力》等文章介绍了采用 GraphQL 的诸多优点,感兴趣的读者可点击阅读。后端实现 GraphQL 是要比实现 REST api 稍微麻烦一些,但也不是非常难。

2. 很多个小而简单的后端,而不是一个复杂的大后端。

这类似于微服务的概念,也就是不要把各种逻辑全部写在后端逻辑里,而是尽量模块化,各个模块之间松散耦合,越松散、越无状态、越少互相依赖越好。

3. 前端(包括 Web 应用和移动应用)是一个比较纯粹的前端,不依赖后端。

Web 实现上和传统 Web 应用有所区别,因为传统 Web 都是在后端渲染页面的,前端没有什么逻辑,但最近几年流行的 React、Vue、Meteor 等全部是这种前端自带逻辑的设计方式,前端完全通过 GraphQL 连接后端服务来获取数据。这种设计可以让 Web 和移动 App 基本采用完全一致的架构,从而让 Web 应用很容易移动化。

4. 前端来实现完整应用逻辑,后端则没有。

也就是说这个应用表现为一个游戏,还是一个交易所,是由前端来组织多个后端服务来形成,后端只提供了服务,甚至不知道,也不需要知道前端究竟是什么业务。

5. 前端标准化,可以灵活切换不同的后端。

例如,大家会发现电商网站和应用的界面基本都是一模一样的,为什么每家电商都要发布运营自家的 App,而用户要每个地方注册账户,到处填写自己的支付信息呢?理想的电商 DApp 如果采用标准化设计,相同的界面、相同的 App,可以在多家电商平台购物。

其实,很多技术多年发展后,标准化是必由之路。举例而言,任何品牌的电视可以收看任何频道播放的任何节目。任何品牌的汽车都可以加同等规格的任何品牌汽油,加油口也是一样的;车辆可以在任何规格的公路上行驶,无论在哪个国家和地区——这就是标准化的威力。

如何保证用户数据的一致性

1.由 DID 来保证用户、身份、服务、物品等的一致性,即使跨不同系统,只要这些 ID 保证一致,就不会混淆。DID 的去中心化特征,也保证了大家采用同一套 ID 系统不会有人一家独大,也不会有人占有垄断数据——对照 Facebook、微信这样的平台,大家就明白用户和平台,到底谁说了算。2.由区块链来保证数据、证据、记录的一致性,以及公开透明、可验证、可追溯。链就像联系各个部件的神经中枢,确保所有参与方不会产生争议。3.链上的数字资产来实现标准化、自动化支付和结算,以及数字化的权益归属。4.由智能合约来保证多方合作的利益分配,公开透明。

DApps 设计示例

如果用上述思路实现一个类似于“知识星球”(前身为“小密圈”)应用的话,其设计实现就和传统的 App 有所不同。

假设有开发者打算基于 ArcBlock 平台开发一个类似“知识星球”的 DApp,一个重要的诉求就是这些收费的圈子是充分去中心化的,没有人(包括开发者)可以关闭一个私密的共享圈子。

“小密圈”一开始发展非常迅速,用户非常喜欢,但是不久就被有关部门下架处理——可能有用户在应用内分享违法内容是作出这一封禁决定的重要考量,而因为一小部分不法内容导致整个服务下降,殊为可惜,正所谓“把孩子和洗澡水一起泼掉了”。

一个好的去中心化服务,首先可以有很多节点,每个节点可以制定自己的规则,不符合规则的,节点运营者可以自行处理或者按照当地法律法规处理;不愿受限的用户可以运行自己的节点,或者自发联合起来运行自己的节点。只要这些节点的协议是一致的,采用 DID 机制来分享用户资料,采用链上资产来支付和控制访问管理,那么用户就可以用一个统一的客户端 App (Web、移动应用皆可)来统一访问无数个后端节点。

这样的设计就完美地实现了类似“知识星球”的去中心化的私密分享社群。每个节点制定自己的规则,自主管理内容和法律合规,违规的节点即使被清理关闭,也不会影响整个服务。如果某个节点的服务器宕机,可以简单更换服务器继续认可过去的 DID 和购买记录继续运行,原来的用户一点都不受影响,甚至用户不会知觉节点服务器已经迁移。

开发这个 DApp 的开发者可以制定分配规则。例如所有收益的 10% 归这个开发者;每个节点可以制定规则,例如收入的 15% 归节点运营者;每个收费的分享群主制定自己的价格。如果群主觉得节点收费太贵,可以选择一个便宜的节点,甚至自己运行节点,就完全不需要给节点分成。整个应用的开发者就只需要维护好应用,自己享受分成。应用开发者甚至可以自行制定分成规则,例如收入的 50% 给前端开发者,50% 给后端开发者,如此类推。

来源: ArcBlock 技术社区[1]

References

[1] ArcBlock 技术社区: https://community.arcblockio.cn/t/topic/304

更多ArcBlock区块基石信息,可关注以下渠道了解:

  • 官网 | https://www.arcblock.io

  • ABT 链网 | https://www.abtnetwork.io

  • ABT 钱包 | https://abtwallet.io

  • 开发者文档 | https://docs.arcblock.io

  • Twitter | https://twitter.com/ArcBlock_io

  • Facebook | https://www.facebook.com/arcblock.io/

  • LinkedIn | https://www.linkedin.com/company/18355951/

  • Reddit | https://www.reddit.com/r/arcblock/

  • Medium | https://medium.com/arcblock

  • 微博 | https://weibo.com/realArcBlock

  • 微信群 | 加“ABT共识社区小助手(ID: L520abt1314)”好友入群

  • 电报群 | Telegram groups:

    Telegram (English): https://t.me/ArcBlock

    Telegram (中文): https://t.me/ArcblockAsian

↙ArcBlock 技术社区  欢迎参与

相关推荐

ABT 钱包网页端 0.2.8 版更新日志 | ArcBlock 动态

2021 年 1 月 15 日,ArcBlock 开发的去中心化身份钱包 ABT 钱包网页端新至 0.2.8 版。ABT 钱包网页端更新日志:2021 年 1 月 15 日ArcBloc...

ArcBlock的博客 850

ABT 节点 1.1.16 版更新日志 | ArcBlock 动态

2021 年 1 月 16 日,ArcBlock 开发平台 ABT 节点更新至 1.1.16 版。ArcBlock DApp 平台更新日志:2021 年 1 月 16 日ArcBlock...

ArcBlock的博客 479

每周研发进展(1 月 15 日)| ArcBlock 动态

2021 年 1 月 9 日至 1 月 15 日,ArcBlock 工程团队研发进展如下:ABT 节点Release•Bug bash and release 1.1.16 on Jan...

ArcBlock的博客 488

ABT 节点 1.1.15 版更新日志 | ArcBlock 动态

2021 年 1 月 11 日,ArcBlock 开发平台 ABT 节点更新至 1.1.15 版。ArcBlock DApp 平台更新日志:2021 年 1 月 11 日ArcBlock...

ArcBlock的博客 508

招聘 UX 设计师 欢迎加入 ArcBlock 中国研发中心

ArcBlock 区块基石正在寻找能够在多元化、多功能、独立团队环境中帮助构建优秀产品的 UX 设计师(坐标中国)。如果你能适应远程办公方式,能自我管理时间,喜欢透明的企业文化,乐意和国...

ArcBlock的博客 587

每周研发进展(1 月 8 日)| ArcBlock 动态

2021 年 1 月 2 日至 1 月 8 日,ArcBlock 工程团队研发进展如下:ABT 节点Release•Release 1.1.10 on Jan. 8Core•Feat: ...

ArcBlock的博客 463

ABT 节点 1.1.9 版更新日志 | ArcBlock 动态

2021 年 1 月 1 日,ArcBlock 开发平台 ABT 节点更新至 1.1.9 版。ArcBlock DApp 平台更新日志:2021 年 1 月 1 日ArcBlock[1]...

ArcBlock的博客 439

每周研发进展(1 月 1 日)| ArcBlock 动态

2020 年 12 月 26 日至 2021 年 1 月 1 日,ArcBlock 工程团队研发进展如下:ABT 节点Release•Bug bash and release 1.1.9...

ArcBlock的博客 423

ArcBlock 区块基石:告别 2020,你好 2021

12 月 31 日,2020 年的最后一天,ArcBlock 区块基石创始人兼 CEO 冒志鸿写下本文,回顾 ArcBlock 团队在过去一年的心路历程和进展,并充满信心的展望 2021...

ArcBlock的博客 704

ArcBlock ⑫ 月报 | ABT 节点 1.1 版发布

12 月,ArcBlock 团队发布 ABT 节点 1.1 版并不断更新升级,同时推进其他产品产品的研发工程。ABT 节点发布与升级•12 月 1 日,ArcBlock 发布 ABT 节...

ArcBlock的博客 496

ABT 节点 1.1.8 版更新日志 | ArcBlock 动态

2020 年 12 月 25 日,ArcBlock 开发平台 ABT 节点更新至 1.1.8 版。ArcBlock DApp 平台更新日志:2020 年 12 月 25 日ArcBloc...

ArcBlock的博客 442

每周研发进展(12 月 25 日)| ArcBlock 动态

2020 年 12 月 18 至 25 日,ArcBlock 工程团队研发进展如下:ABT 节点•Release - v 1.1.8 released on December 25•...

ArcBlock的博客 400

用户自主身份的成长因素 | ArcBlock 博客

作者:Adrian Doerk翻译:陈俊ArcBlock 区块基石去年加入去中心化身份基金会[1],今年加入MyData[2],与全球各界技术商业学术伙伴一起努力把用户在数字世界的...

ArcBlock的博客 744

ABT 节点 1.1.7 版更新日志 | ArcBlock 动态

2020 年 12 月 21 日,ArcBlock 开发平台 ABT 节点更新至 1.1.7 版。ArcBlock DApp 平台更新日志:2020 年 12 月 21 日ArcBloc...

ArcBlock的博客 441

个人数据存储将成为下一件大事吗?| ArcBlock 博客

作者:Irina Bolychevsky、Simon Worthington翻译:陈俊日前,ArcBlock 区块基石加入[1]了非营利机构 MyData Global,与全球 10...

ArcBlock的博客 886

MyData 白皮书:一种以人为本的个人数据管理北欧模式 | ArcBlock 博客

写作:Poikola、Kuikkaniemi、Honko(芬兰开放知识的 MyData 工作组)翻译:陈俊校对:冒志鸿日前,ArcBlock 区块基石加入[1]了总部位于芬兰赫尔辛...

ArcBlock的博客 4025

在 ABT 节点部署 RPG 制作大师游戏指南 | ArcBlock 博客

作者:冒志鸿、Matt McKinney译者:陈俊在 ABT 节点部署 RPG 制作大师游戏的分步指南开始之前项目仓库在此:https://github.com/blocklet/r...

ArcBlock的博客 756

在 ABT 节点上设置域 | ArcBlock 博客

作者:Matt McKinney译者:陈俊在 ABT 节点上设置域的分步指南。对于使用ArcBlock DApp 平台[1]进行开发的任何人,为你的 ABT 节点添加域是开发博客、...

ArcBlock的博客 475

如何用【在 ABT 节点上安装】来部署 Blocklet

作者:Matt McKinney译者:陈俊这一演示向你展示如何使用在 ABT 节点上安装选项将任何 Blocklet 直接部署到你的 ABT 节点上。在 ABT 节点上安装ArcBl...

ArcBlock的博客 474

ArcBlock 加入 MyData 推动用户完全控制个人数据

ArcBlock 区块基石加入 MyData Global,以帮助实现用户控制的数据。今天,领先的 DApp、区块链和分布式账本技术开发平台ArcBlock[1]宣布正式加入总部位于...

ArcBlock的博客 652

ABT 节点 1.1 版更新日志

ArcBlock 发布了 ABT 节点 1.1 版,它提供了新功能、改进的开发者体验以及安装使用 Blocklet 的新方法。ABT 节点 1.1 版更新日志ABT 节点 1.1.0 发...

ArcBlock的博客 473

ArcBlock 发布 ABT 节点 1.1 版

ArcBlock 发布了 ABT 节点 1.1 版,通过集成的去中心化身份(DID)、新的开发工具、改进的用户体验以及使用 Blocklet 的新方法来大大简化 DApp、区块链和分布式...

ArcBlock的博客 287

ArcBlock ⑪ 月报 | ABT 节点持续迭代、Blocklet 实例不断丰富

整个 11 月,ArcBlock 研发团队在不断改进完善 ABT 节点,在这一 DApp 开发平台部署的 Blocklet 实例也日益丰富。节点升级•11 月 2 日,ABT 节点 1....

ArcBlock的博客 246

在 ABT 节点上部署 Vue Vite | ArcBlock 博客

有关如何使用现成的 Vue Vite Blocklet 和 ABT 节点部署 Vue 的演示。介绍在此演示中,我们将向你展示如何使用现成的 Blocklet 和 ABT 节点快速部署 V...

ArcBlock的博客 386

ABT 节点 1.0.35 版更新发布 | ArcBlock 动态

2020 年 11 月 24 日,ArcBlock 开发平台 ABT 节点更新至 1.0.35 版,为下一个主版发布做准备。ArcBlock DApp 平台更新日志:2020 年 11 ...

ArcBlock的博客 248

ABT 节点 1.0.32 版更新发布 | ArcBlock 动态

2020 年 11 月 13 日,ArcBlock 开发平台 ABT 节点更新至 1.0.32 版,为下一个主版发布做准备。ArcBlock DApp 平台变更日志:2020 年 11 ...

ArcBlock的博客 416

在 ABT 节点部署 HTML 网站 Blocklet | ArcBlock 博客

作者:Matt McKinney译者:陈俊关于如何使用现成的 Blocklet 和 ArcBlock 的 ABT 节点部署简单 HTML 网站的轻松演示。用 ArcBlock 平台部...

ArcBlock的博客 359

ABT 节点 1.0.31 版更新发布 | ArcBlock 动态

2020 年 11 月 9 日,ArcBlock 区块基石 ABT 节点开发平台更新至 1.0.31 版。ArcBlock DApp 平台更新日志:2020 年 11 月 9 日ArcB...

ArcBlock的博客 317

在 ABT 节点上启动 Solid 服务器 | ArcBlock 博客

作者:Matt McKinney译者:陈俊为了把数据合法所有权归还给每个网络用户以破除当今互联网越来越集中垄断的格局,万维网之父蒂姆·伯纳斯-李从 2015 年开始研发 Solid,...

ArcBlock的博客 438

ABT 节点 1.0.24 版更新发布 | ArcBlock 动态

2020 年 11 月 2 日,ArcBlock 区块基石 ABT 节点开发平台更新至 1.0.24 版。ArcBlock DApp 平台更新日志:2020 年 11 月 2 日ArcB...

ArcBlock的博客 374
上一篇: ArcBlock 加入「COVID-19 证书倡议」 用 DID 技术阻遏新冠肺炎疫情
下一篇: 10 分钟了解可验证证书 | ArcBlock 博客
ArcBlock区块基石
ArcBlock区块基石 企业官方账号 企业官方账号
博客等级 码龄6年 95粉丝 387原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值