如何创建可扩展的去中心化应用程序? 使用更少的区块链

不,在区块链上启动去中心化应用程序(dapp)不会带来成功的业务。 事实上,大多数用户甚至不会考虑应用程序是否在区块链上运行——他们只是选择更便宜、更快、更简单的产品。

不幸的是,即使区块链有其独特的功能和优势,但在其上运行的大多数应用程序都比其中心化竞争对手更昂贵、更慢且更不直观。

如何创建可扩展的去中心化应用程序? 使用更少的区块链

在基于区块链构建的应用程序的白皮书中,你经常可以找到这样的一段话:“区块链价格昂贵,无法支持每秒所需的交易数量。幸运的是,许多聪明的人正在致力于扩展区块链,并且当我们的应用程序启动时,它将变得非常可扩展。”

在一个简单的段落中,dapp 开发人员可以放弃对可扩展性问题和问题的替代解决方案进行更深入的讨论。 这通常会导致架构效率低下,在区块链上运行的智能合约充当应用程序的后端和核心。

然而,仍然存在未经测试的去中心化应用程序架构方法,这些方法可以通过减少对区块链的依赖来实现更好的可扩展性。 例如,Blockstack 正在开发一种架构,其中大部分应用程序数据和逻辑都存储在链外。

让我们首先看一下更传统的方法,它使用区块链作为应用程序用户之间的直接中介,并且扩展性不是特别好。

方法#1:区块链作为后端

为了更清楚地说明问题,我们以酒店业为例。 这是一个巨大的行业,像 Booking.com 这样的中介机构, 他们收取巨额费用 用于连接客人和酒店。

在任何情况下,如果我们想使用这种方法击败这样的中介,我们将尝试使用以太坊等区块链上的智能合约来复制他的业务逻辑。

在“世界计算机”上运行的开源智能合约可以将商家与消费者连接起来,而无需第三方介入,最终减少中介收取的费用和佣金。

如下图所示,酒店使用去中心化应用程序在区块链上发布有关房间的信息、工作日或周末的可用性和价格,甚至可能还包括房间的描述以及所有其他相关信息。

如何创建可扩展的去中心化应用程序? 使用更少的区块链

任何想要预订房间的人都可以使用此应用程序来搜索区块链上托管的酒店和房间。 一旦用户选择了房间,就可以通过向酒店发送所需数量的代币作为押金来进行预订。 作为响应,智能合约会更新区块链中的信息,表明该号码不再可用。

这种方法的可扩展性问题有两个方面。 首先,每秒最大交易数。 其次,区块链上可以存储的数据量。

我们来做一些粗略的计算。 Booking.com 表示,他们有近 2 万家酒店在其注册。 假设酒店平均有 10 间客房,而每间客房每年仅被预订 20 次 - 这意味着我们平均每秒有 13 次预订。

从这个数字来看,值得注意的是以太坊每秒可以处理大约 15 笔交易。

同时,值得考虑的是,我们的应用程序还将包含酒店的交易 - 用于下载和不断更新有关其房间的信息。 酒店非常频繁地更新房价,有时甚至每天更新,每次价格或描述更改都需要在区块链上进行交易。

这里还存在大小问题 - 以太坊区块链的重量最近超过了 2TB 大关。 如果采用这种方法的应用程序真正流行起来,以太坊网络将变得极其不稳定。

这种基于区块链的系统可以排除外来者,因为它的公正性和缺乏中心化是区块链技术的主要优点。 但区块链还有其他特性——它是分布式的、不可重写的,这些都是优秀的特性,但你必须在交易的速度和佣金上付出代价。

因此,dapp开发者必须仔细评估使用区块链的每个功能是否真的需要分布式和不可写性。

例如:将每家酒店的数据分布在世界各地的数百台机器上并永久存储在那里有什么好处? 房价和供应情况的历史数据始终包含在区块链中真的很重要吗? 可能不会。

如果我们开始提出这样的问题,我们就会开始发现我们的所有功能不一定需要所有昂贵的区块链功能。 那么,还有什么选择呢?

方法#2:受 Blockstack 启发的架构

虽然主要强调的是 Blockstack 在用户是其数据所有者的应用程序上(例如, 文字, 奔腾音响, 图像优化器 или 石墨),Blockstack 还有一个理念,即仅在绝对必要时才使用区块链。 他们的主要论点是区块链速度慢且昂贵,因此只能用于单个或不频繁的交易。 与应用程序的其余交互应通过点对点进行,即去中心化应用程序的用户必须直接相互共享数据,而不是通过区块链。 毕竟,BitTorrent、电子邮件和 Tor 等最古老、最成功的去中心化应用程序是在区块链本身概念出现之前创建的。

如何创建可扩展的去中心化应用程序? 使用更少的区块链
左:第一种方法,用户通过区块链进行交互。 右:用户直接交互,区块链仅用于身份识别等.

让我们回到酒店预订的例子。 我们需要一个公正、独立和开放的协议来连接客人与酒店。 换句话说,我们要去掉中心化的中间人。 例如,我们不需要将房价不断存储在公共分布式账本中。

为什么我们不让客人和酒店直接互动,而不是通过区块链呢? 酒店可以将价格、空房情况和任何其他信息存储在每个人都可以访问的地方 - 例如,IPFS、Amazon S3,甚至他们自己的本地服务器。 这正是 Blockstack 的去中心化存储系统所称的 盖亚。 它允许用户选择他们想要存储数据的位置,并通过一种称为“访问数据”的方法来控制谁可以访问数据 多用户存储.

为了建立信任,所有酒店数据均由酒店本身进行加密签名。 无论这些数据存储在哪里,都可以使用与存储在区块链上的酒店身份相关的公钥来验证其完整性。

对于 Blockstack,只有您的身份信息存储在区块链上。 有关如何获取每个用户数据的信息存储在区域文件中,并通过使用节点的对等网络进行分发。 再说一遍,您不需要信任节点提供的数据,因为您可以通过将其与存储在区块链和其他用户中的哈希值进行比较来验证其真实性。

在该系统的简化版本中,客人将使用 Blockstack 点对点网络搜索酒店并获取有关其房间的信息。 您收到的所有数据的真实性和完整性可以使用存储在中的公钥和哈希值进行验证 虚电路 块堆栈。

这种架构比第一种方法更复杂,并且需要更全面的基础设施。 事实上,这正是 Blockstack 的用武之地,它提供了创建这样一个去中心化系统所需的所有组件。

如何创建可扩展的去中心化应用程序? 使用更少的区块链

通过这种架构,我们只将真正需要分发而不是覆盖的数据存储在区块链上。 对于 Blockstack,您只需要区块链上的交易来注册并指示您的数据应存储在哪里。 如果您想更改任何此信息,您可能需要进行更多交易,但这不是重复发生的事件。

此外,与第一种方法相反,应用程序逻辑在客户端运行,而不是在智能合约上运行。 这使得开发人员可以更改此逻辑,而无需进行昂贵的甚至有时甚至不可能的智能合约更新。 通过将应用程序数据和逻辑保持在链下,去中心化应用程序可以达到传统中心化系统的性能和可扩展性水平。

结论

在 Blockstack 上运行的应用程序可以比传统的区块链应用程序更好地扩展,但它是一种较年轻的方法,有其自身的问题和未解决的问题。

例如,如果去中心化应用程序不在智能合约上运行,那么这会减少对实用代币的需求。 考虑到 ICO 一直是去中心化应用程序(包括 Blockstack 本身)的主要资金来源,这可能会给企业带来问题

这里也存在技术问题。 例如,在智能合约中实现酒店预订功能相对容易,在原子操作中,预订房间以换取代币。 在没有智能合约的情况下,如何在 Blockstack 应用程序中进行预订还不是很明显。

瞄准具有数百万用户潜力的全球市场的应用程序必须具有良好的扩展性才能取得成功。 在不久的将来仅仅依靠区块链来实现这种级别的可扩展性是错误的。 为了能够与 Booking.com 等大型中心化市场参与者竞争,去中心化应用程序开发人员应该考虑设计应用程序的替代方法,例如 Blockstack 提供的方法。

来源: habr.com

添加评论