从前端到数据库,EthStorge 如何帮助 DAPP 实现真正去信任化?

极客 Web3
2024-05-17 17:51:06
收藏
EthStorage 协议由部署在以太坊上的智能合约和 Layer2 网络中的存储节点组成,其中,智能合约提供了键值存储, 而二层的存储节点负责存放数据本身。

作者:极客 Web3 

 

摘要:

一个去中心化应用由多个部分构成,但目前只有最核心的后端逻辑运行在以太坊上,其他部分比如前端代码还部署在以太坊之外,同时还包含很多没有上链的数据,所以大多数DAPP无法完整继承以太坊的安全性,远未达到理想化的状态。

导致上述问题的原因主要有两个:一是以太坊没有为开发者提供相应的前端标准和工具,二是链上存储数据的成本太高。

为了提供去中心化的前端标准,EthStorage 团队提出了 web3:// 访问协议,为开发者提供一整套通过智能合约来部署和访问前端代码,甚至是类文件系统的标准和工具,目前已成为以太坊的正式标准。

为了降低以太坊链上数据的存储成本,EthStorage团队开发了二层存储协议EthStorage,利用PoRA (Proof of Random Access) 和零知识证明,在继承以太坊一层安全性的同时,极大降低存储开销。

致谢:感谢来自极客Web3 的 Faust,ChainFeeds 的 Zhixiong Pan、LXDAO的 Bruce、EthStorage 的 Qi Zhou, Lun Deng 对本文的反馈。

去中心化DAPP的背景和问题

以太坊的愿景是成为世界计算机,希望在其上构建的应用程序都继承它的安全性。开发者只需一次部署,该应用就会永远在以太坊上运行,没有实体可以对其进行审查或恶意操纵。

但现在的去中心化应用DAPP是否达到了上述目标?为了更清晰的回答这个问题,我们需要将一个DAPP应用解构,看它都包括哪些部分,进而分析各个部分的去信任化程度,来得出最终结论。

一般情况下,一个去中心化DAPP会包含前端界面、后端服务器、数据库。用户访问前端界面时,会通过浏览器和域名服务来加载前端内容。其中:

·前端和域名服务:大多没有通过智能合约来部署和访问,区块链提供的特性如避免单点故障、代码不可篡改、抗审查、社区治理等都没有在前端这部分体现出来。

·后端服务器:部分由智能合约实现,有些计算密集型的任务无法完全上链。

·数据库:部分由智能合约实现,由于链上存储费用非常高,数据量较大的情况下DAPP还是采用链下的存储方案。

从前端到数据库,EthStorge如何帮助DAPP实现真正去信任化?

通过上面的分析,可以看到现在的去中心化DAPP只有部分组件通过智能合约获得了以太坊的保护,以太坊体系还远未实现当初的“去中心化的世界计算机”愿景。

2023年末Vitalik回顾以太坊的发展,写了一篇反响较大的文章“Make Ethereum Cypherpunk Again”,讨论了以太坊社区该如何回归密码朋克的理念。他在文中总结了以太坊甚至是更大范围的Web3社区应该坚守的价值观,提到非常重要的一点:

去中心化应用应尽量减少对任何单一主体的依赖,即便DAPP的核心开发者永久消失,应用程序也可以继续运转。

从前端到数据库,EthStorge如何帮助DAPP实现真正去信任化?

由此可见Vitalik对于去中心化应用该如何构建也有类似的期待。接下来我们将详细分析去中心化DAPP中每个组件面临的问题,探讨如何对其进行改进。

前端和域名服务

在去中心化应用的几个组成部分中,前端和域名服务的中心化程度最为严重。目前绝大部分dApp的前端都使用中心化服务器,项目方可以随时修改前端代码,不需要经过社区治理,也不受到时间锁限制,这部分的安全性与部署在以太坊上的智能合约相去甚远。

黑客可以入侵服务器修改前端代码,而dApp用户会因为使用该恶意前端而损失资产。这个问题在上个DeFi Summer中反复出现,我们不禁要问:为什么前端不能和后端一样部署在以太坊上,让修改行为通过社区治理和时间锁才生效呢?

从前端到数据库,EthStorge如何帮助DAPP实现真正去信任化?

另外请设想一下,假如 Uniswap 的开发团队有一天不再给他们的前端服务器以及域名服务付费,那么 Uniswap 的用户和 LP 将如何使用 Uniswap?

绝大部分用户并不懂得如何绕过前端和智能合约交互,虽然 Uniswap 有尝试将其前端上传到 IPFS,但是 IPFS 和以太坊是不同的网络,在可靠性和去信任程度上完全不同。值得一提的是,IPFS的内容访问速度很慢,现在绝大多数用户还是在和Uniswap部署在中心化服务器上的前端进行交互。

此外,因为Uniswap前端的运营主体是Uniswap Labs,他们为了迎合监管,增加了对Token列表的审查,这与他们在以太坊上部署的智能合约进成了反差,因为谁都无法随意对智能合约进行修改。所以,在前端被审查的Token还是可以在合约层面被交互到的,由此可见代码上链对抗审查的重要性。

后端服务器

因为EVM可以提供图灵完备的执行环境,所以大部分后端逻辑都可以在以太坊链上执行,我们可以说智能合约类的应用可以完全继承以太坊的安全。只是因为成本原因,一些计算密集型的任务无法直接在链上进行。

针对这个问题,现在探索比较多的是使用ZK或者OP的方式,将计算移交到链下完成,以太坊链上只对计算结果进行最终确认,以此在计算层面上进行扩容。有些AI相关的项目将这类方法推向了极致,希望将 AI 大模型这种超级计算密集型的任务与区块链挂钩,值得我们去密切关注。

数据库

对于数据库,EVM 原本就支持键值对/KV型存储 (Key Value Store),可以覆盖非常多的使用场景,但核心的问题是:链上存储的成本太高。

贵到什么地步呢?在 Gas Price为10Gwei 的情况,链上存储1GB的数据需要 6200多枚ETH,超过2000万美元!显然存储成本成为了数据库去中心化的核心问题。

我们可能会想,能否使用和上述计算扩容类似的方法,对存储进行扩容,也就是链下存储,链上验证存储效果。后面我们会对这个思路详细展开。

分析了上述谈及的DAPP组成部分后,我们发现,只有让DAPP的每个部分都足够安全和去信任,其作为一个去信任的整体,才能真正成为一个去中心化的DAPP。而以太坊作为dApp的运行与托管平台,需要给开发者提供相应的解决方案,才能孕育出符合以太坊愿景的应用生态。

DAPP的去信任解决方案

围绕着如何让DAPP完全基于以太坊来部署和访问,EthStorage团队提出了两套解决方案:

  • web3:// 访问协议:解决如何使用智能合约来部署和访问前端代码,甚至是类文件系统的问题。
  • EthStorage 二层存储协议:在继承以太坊安全性的同时,极大降低了存储开销。

web3:// 访问协议

web3:// 可以被理解为去中心化版本的 http://,与 http 的 URL 中通过指定服务器 IP 地址或者域名来访问中心化的资源类似,web3 的 URL 需要指定一个智能合约地址或者ENS域名,来访问存储在其上的资源。

我们可以将一个网站的前端全部部署到一个智能合约中,并通过web3:// 来访问!可以对比一下两者的区别:

从前端到数据库,EthStorge如何帮助DAPP实现真正去信任化?

目前 web3:// 已经成为了以太坊的正式标准(ERC-4804),如果希望详细了解 web3:// 访问协议的内容,可以访问其官网。为了更好的在智能合约中做文件管理,我们提出了 ERC-5018,它在智能合约中模拟了一套文件系统的接口,这样就可以通过 ethfs-cli,将打包好的前端代码文件夹上传到一个智能合约中,并通过 web3:// 来访问这个网站。

大家如果感兴趣,可以按照教程完成一个简单的去中心化应用部署和访问。

有了 web3:// 访问协议,我们才能真正让 dApp 前端也具有了 “Code is law” 的属性。对于开发者来说,一旦部署,这个前端将永久执行下去。试想如果Uniswap labs也将其前端部署到了以太坊,那么即使团队想在前端层面对用户进行审查和限制,也无法阻止人们使用其部署在以太坊上的前端了。

当然在解决了可行性的问题后,我们还意识到链上存储大量数据的成本会非常高,从而使开发者在链上部署前端的时候面临困扰。我们进一步开发了 EthStorage 二层存储协议,在继承以太坊安全性的同时,极大降低存储开销。

EthStorage二层存储协议

EthStorage 协议由部署在以太坊上的智能合约和Layer2网络中的存储节点组成,其中,智能合约提供了键值存储, 而二层的存储节点负责存放数据本身。

用户通过 EIP-4844 的 BLOB 将待存储的数据上传到以太坊上,EthStorage智能合约只会记录BLOB内数据的哈希,从而有效的降低存储成本。

同时,二层的存储节点会下载对应的BLOB数据到本地磁盘,使用 PoRA (Proof of Random Access) 和 ZK,将存储证明提交至以太坊上的合约做验证,该合约需要通过之前记录的Blob哈希来确认存储节点上传的ZK证明能否对上号,以此确认二层网络中的存储节点真的存放了这些数据。

具体流程如下:

从前端到数据库,EthStorge如何帮助DAPP实现真正去信任化?

对于开发者来说,其上传数据和获取数据的接口非常简单:

从前端到数据库,EthStorge如何帮助DAPP实现真正去信任化?

应用开发者可以直接通过EthStorage提供的合约接口,对大块数据进行读写,写入成本约等于直接在链上存储数据的千分之一。因此,EthStorage不仅支持链上部署前端,对更广泛的键值存储数据库操作也提供了成本更低的解决方案。

目前,EthStorage已获得了以太坊官方的 Grants,并且已经在 Sepolia 部署了公开测试网,欢迎大家加入。

总结与展望

大多数DAPP的重要组件如前端和数据库未部署在以太坊,无法继承以太坊的安全,导致应用作为一个整体无法做到永久执行,抗审查,可治理。

EthStorage 对此提出了两个方案解决这个问题:web3:// 访问协议解决使用智能合约来部署和访问前端的问题;EthStorage 二层存储协议解决存储成本过高的问题。

为了实现以太坊最初的愿景,我们认为它将演进为一个去中心化的Web服务器,生态中的去中心化应用会将其所有组件都部署于以太坊,不管是后端代码、前端还是数据,一旦部署,代码可以永久运行,数据可以永久访问,成为一个真正的 Unstoppable Dapp。

EthStorage 公开测试网正在进行第二次激励活动,感兴趣的社区小伙伴可以按照Guide 完成自己的第一个 Unstoppable Dapp 部署和访问!

链捕手ChainCatcher提醒,请广大读者理性看待区块链,切实提高风险意识,警惕各类虚拟代币发行与炒作, 站内所有内容仅系市场信息或相关方观点,不构成任何形式投资建议。如发现站内内容含敏感信息,可点击“举报”,我们会及时处理。
banner
ChainCatcher 与创新者共建Web3世界