写点什么

Web3.0 时代, 基于 P2PDB 实现一款 Dapp 的技术理论

作者:Rock-李益
  • 2022 年 7 月 26 日
  • 本文字数:1975 字

    阅读完需:约 6 分钟

一、什么是 Dapp

Dapp 是 Decentralized Application 的缩写,中文意思翻译为去中心化的应用,也有人把它称之为分布式应用(实际上不准确),它被认为开启了 Web 3.0 的时代,用于解决 Web2.0 中无法解决的问题。


二、Web3.0 有哪些特征

如果要了解 web3.0 有哪些特征, 那么我们需要证明哪些问题是 web2.0 时代无法解决的,在 web2.0 时代中,最明显的例子是,用户数据集中在云中心,数据通过中心服务器存储与交换, 用户的数据安全取决于企业的道德感,特别在云原生概念的普及情况下,巨头掌握大量数据资源,在 Web3.0 时代,期望将用户的数据使用权交还给用户做决定。


三、为什么去中心化是 web3.0 的标志

要理解什么是去中心化, 以太坊的 V 神给出了一个很经典的解释,这里我按照自己的理解分成了三层,同时具备这三层含义的应用,可以称为 Dapp 去中心化的应用


四、如何实现一款 Dapp

前言:

实现 Dapp 需要根据不同业务场景,来选择不同的技术栈,最经典的是需要解决支付、存储、网络通讯等问题,每种业务场景现如今都有不同的解决方案,本文主要介绍解决去中心化数据存储问题,由于笔者是传统互联网行业出生,尝试通过传统互联网技术+区块链技术去解决 Web3.0 时代的数据存储问题,所以在解决思路上会更加偏传统互联网的思路,对应的互联网技术人员使用本方案将得到最低的转型成本。

P2PDB 介绍:一个为了 web3.0 时代的而生的去中心化、分布式、点对点数据库、它是传统数据库技术与区块链技术的结合,P2PDB 基于merker-CRDT论文,使用 IPFS-libp2p 构建去中心化网络和 IPFS-pubsub 与对等节点同步数据。P2PDB 愿景是打造一个工业级别的去中心化式数据库,使 P2PDB 成为离线应用程序,去中心化应用程序(dApps)、和边缘计算应用程序数据存储的绝佳选择,


https://github.com/Rock-liyi/p2pdb​github.com/Rock-liyi/p2pdb


技术原理简介:

P2PDB 基于实现了一个 mysql 语法的服务器端, 兼容常规的 mysql 语法,可使用任一一种 mysql 客户端连接,包括 PHP、JAVA、GO、RUBY、PYTHON 等主流语言的兼容,意味着在使用体验上跟传统的 mysql 数据库在使用方式上没有太大的区别,

它是一个点对点数据库,这意味着每个对等点都有自己的特定数据库实例。数据库在对等点之间自动复制,从而在任何对等点更新时生成数据库的最新视图。也就是说,数据库被拉到客户端。

这意味着每个应用程序都包含他们正在使用的完整数据库。与客户端-服务器模型相比,这反过来又改变了数据建模,客户端-服务器模型通常为所有数据使用一个大数据库:在 P2PDB 中,应该根据该数据的访问权限进行存储、“分区”或“分片”。例如,在类似微博的应用程序中,推文不会保存在数百万用户同时写入的全局“推文”数据库中,而是每个用户都有自己的微博数据库。要订阅别的用户推文,只需关注主题(topic)

简单的来说,P2PDB 更像似一个 git 方式的存储, 所有节点都保存它所需要的数据,这跟中心化存储有着本质的区别。

数据安全:

P2PDB 的数据通过本地客户端生成的公私钥进行加密,加密级别可以到列级别,其它节点需要读取同步本地节点数据,都需要本地节点进行授权。


五、实现一款去中心化的离线编辑器

在 Web2.0 场景中, 多人协同办公已经成为经典的场景,如飞书、钉钉云文档等场景,这类场景需要解决多人同时操作的并发冲突问题, 解决这类冲突的算法有操作转换 OT 算法、无冲突复制数据 CRDT 算法,而在 P2PDB 中,提供了一种表结构对应一种协议算法的方式, 每张表都有不同的协议选择,除了 P2PDB 团队提供的算法协议,有能力的开发者也可以根据协议规范,自行增加协同场景的冲突解决协议。

在文档场景中,数据写入会先写到本地的 P2PDB 数据库, P2PDB 会通过 pubsub 模块将数据广播到其它节点,而 Consistency 模块会负责处理数据顺序一致性。

六、实现一款去中心化的邮件系统

在 Web2.0 时代中,邮件系统通常是由某大型公司提供并做数据交换,通常会通过一个中心节点交换数据,而邮件的内容其实对于该公司来说是透明的,不适合发送较为隐私的个人邮件,而基于 P2PDB 开发的邮件系统,邮件内容通过隐私加密,并且直达对等节点,无需中心节点做数据交换,P2PDB 基于 libp2p 实现的 gossip 流言广播算法,可以保证数据传播的到达的可靠性。

七、实现一款去中心化的点对点聊天系统

在中心化的存储方式中,聊天系统的厂商通常不会公开说保存用户的隐私数据,也有的厂商出于某些安全方面的考虑,会存储用户数据,但是无论是选择存储还是不存储,对于厂商来说都是愿不愿意,需不需的问题,而不是能不能的问题,而基于 P2PDB 系统实现的点对点聊天系统,使得用户数据是否公布、传播都取决于用户是否通过私钥授权,用户的数据控制权回归用户,厂商无法再强制收集用户数据。


声明:

以上技术实现仅仅是理论上的,如需要具体实现需要咨询并遵守当地国家的法律法规,切勿使用 P2PDB 应用在违反当地法律的产品中,由此产生的法律问题,均由使用者承担,P2PDB 团队不承担任何法律责任。

发布于: 刚刚阅读数: 3
用户头像

Rock-李益

关注

P2PDB作者之一,PHP-PECL组织成员 2021.09.08 加入

还未添加个人简介

评论

发布
暂无评论
Web3.0 时代,基于P2PDB实现一款Dapp的技术理论_dapp_Rock-李益_InfoQ写作社区