The Graph 上述方法的确可行,但它同时也有一定的不足。比如说,你可能在智能合约部署完成后才发现,自己要发送的事件并没有包含在合约当中,这该如何是好?不幸的是,你只能重新部署一个新的智能合约,并将该事件与相关数据放入新的合约当中。不仅如此,回调函数也很难处理不同的 UI 逻辑。 这时就该让「The Graph」上场了。 The Graph 是一个链下数据索引方案,可以方便人们在以太坊上查询数据。在 The Graph 中,你既可以定义哪些智能合约需要索引、哪些事件与函数调用需要监听,也可以规定如何将传入的事件转化为前端逻辑(或任何正使用 API 的程序)可处理的实体。它使用 GraphQL 作为查询语言,这种语言深受前端工程师的喜爱,因为与传统的 REST API 相比,它能传达更多信息。 通过索引区块链数据,The Graph 可以让我们在应用逻辑中查询链上数据,并且几乎不会出现延迟的情况。 现在,你的 DApp 架构大概是这样: ![]() 现在只剩下最后一个重要问题:扩容。 DApp 的扩容你可能已经听说了,以太坊不具备可扩展性,至少目前还没有。 ![]() ![]() ![]() 显然,问题在于,以太坊上 Gas 费用高昂且区块几近饱和,在它上面搭建 DApp 会给用户带来非常不好的体验。不过值得庆幸的是,一些相关方案正在开发当中。 Polygon 便是一个很受欢迎的 Layer 2 扩容方案。在 Polygon 中,交易的处理与执行是由「侧链」而非主链来完成的。这些侧链是与主链相连的二级区块链。每隔一段时间,侧链就会将其最近的区块聚合起来提交给主链。 ![]() 同样,Optimistic Rollup 和 zkRollup 也属于 Layer 2 方案,工作原理也都类似:他们用「Rollup」智能合约在链下将大量交易进行捆绑,然后定期将这些交易提交给主链。 我们需要知道的是:Layer 2 方案是将交易的执行(即速度较慢的部分)放在链下进行,而在链上只储存交易数据。这样一来,区块链就能得以扩容,因为我们不用再在链上执行每笔交易了。同时,这也让交易进程加快、成本降低,而且在必要时,Layer 2 方案还可以与以太坊主链进行通信。 ![]() 如果到此你感觉头晕目眩、迷惑不解,也属于正常现象,因为将所有这些工具整合在一起本来就十分复杂,容易让开发者感到焦头烂额。但是不用担心,开发框架的不断问世将会切实提升开发者的工作体验。 (责任编辑:admin) |