作者:Daniel Larimer

原文链接:
https://medium.com/@bytemaster/eosio-resource-allocation-reimagined-f219e8d489c

译者:荆凯

译文链接:
https://bihu.com/article/1236666560?i=420&c=1&s=1lGVsQ


概括要点如下:

  • 抵押 EOS 获取 CPU 的方式,可能会被移除,不过会设置过渡期
  • 通过租赁方式分配全部的 CPU
  • 想要获得 CPU,无论是否自己持有 EOS,都需要从资源市场去租赁
  • 将抵押 EOS 所获得的收入和租赁 CPU 所消耗的费用相互抵消
  • CPU 出租所获得的收益,也可能部分的用于支付出块节点的奖励
  • BM 认为,通过这种方式,有助于稳定 CPU 价格,降低 CPU 租赁成本,提高 CPU 价格的确定性。

EOS 网络,是EOSIO的首个实现,也是最广泛使用的公共区块链。

最近在 EOS 网络上,一直在使用其提供的技术功能的一部分,持续处理每秒800次的转账交易。对转账的需求如此之高,以至于 REX 的 EOS token 已经用完了(备注:REX 全称为资源租赁平台,是 EOSIO 内置的功能,用于租赁资源)。

本文探讨了为什么 REX 中用于出借的 EOS 会耗尽,并提出了一个解决方案,以确保 CPU 资源始终可以保持合理的市场价格。

EOS token 有什么作用?

在 EOS 网络中的设计是:EOS 通证(token) 可以抵押,用于获取 EOS 网络中的资源。

CPU 资源已经被市场定价过高,这意味着对大多数人来说,需要用能够负担得起的价格来租用EOS,才能获得他们需要的 CPU 功能,这样,可以将 EOS 的价格波动带来的资本损失降到最小。

REX 旨在提供一个自动化的市场,让拥有 EOS CPU 资源的人,可以出租;而希望让不拥有 EOS 的情况下也能使用 CPU 时间的人能够通过 REX 获得资源。

这其中的挑战在于,需要确定 CPU 资源合适的出租价格,保持 EOS 所有者的资源价值:

如果价格过高, 那么没有人愿意租, 因此网络资源将难以充分利用;如果定价过低, 则可用的 EOS 供应量将会被过度使用, 使得无论出价如何,都无法获取到 CPU 资源。

关于 REX

我们设计REX时使用了一种算法,当剩余的可供租赁的 EOS 供应接近于零时,可以将价格提高到无穷大。

然而,最近 REX 陷入了一种情况,无论出价如何,都无法获取到 EOS,因为,将 EOS 出租给他人时,可以随意收回它们。鉴于预期的获利需求,我们没有预料到会有如此大量的 EOS 从 REX中赎回。

好消息是,REX正在按照设计的方式运行,并且它将兑现代码中的承诺,允许在 30 天内将放入REX的 EOS 归还给出租人。

当使用者要求赎回的 EOS 数量突然超过出借的数量时,定价算法会将价格推至无穷大。

为何会出现当前的情况?

这一情形之所以会发生,是因为在 REX 设计时所做的最初假设:

  1. 大量的账户的租赁需求将呈正态分布
  2. 对 REX 的出租需求将呈正态分布
  3. 租金的上涨,将推动新的需求,为REX提供更多的 EOS 以供出租
  4. 从 REX 的提款赎回需求,将被新增加的存入需求所抵消,EOS 出租的总供应量将相对稳定

现实情况却是:

  1. 存入 REX 的 EOS 数量,符合帕累托分布规律的二八法则
  2. 从 REX 中取回的 EOS 数量,符合帕累托分布规律
  3. 从 REX 中租借 EOS 资源的需求,由帕累托分布规律决定
  4. 在30天的租赁期结束前,就可以提前发起取回的操作,获得租金收入

最初的假设与REX使用的实际情况不匹配,这造成的结果是:资源的租用价格不稳定,而没有 EOS 可供租用。

CPU分配的全新设计

REX 的当前状态,是 EOSIO 公共网络中资源分配策略逐步演进的结果。

为了最大限度地发挥我们所设计解决方案的灵活性,我们喜欢通过这种方式思考:如果不受过去设计的限制,我们可以做些什么不同的事情。

如果可以设想出更好的理想解决方案,那么我们就可以从 EOS 网络及其 REX 的当前状态发展出一种新设计。

最大的抱怨是“CPU”太贵了,其次是在任何给定时间都无法预测CPU带宽的大小。这些抱怨的来源可能与之前的尝试有关,考虑到较高的资金成本和较低的利用率,他们试图降低 CPU 的成本。

EOSIO 被设想为使用一种 token 来表示一个所有权模型,其中 1% 的EOS 允许用户永远免费使用 1% 的 CPU 资源。这种资源模式类似于买房子,你可以永远住在里面。

理想的算法

在理想的算法中,CPU 将没有投机价值,用户所保留的 CPU 时间将是固定的和可预测的。

此外,你可以不必占用大量资本(以EOS token的形式), 并在无需面临资本收益或损失的情况下使用 CPU。

最后,CPU 总会有可用的资源,价格可能不同,因此,CPU 的价格在时间上相对稳定。

要实现这种结果,所有的 CPU 资源都应该从系统合约中租赁, 随着所租赁 CPU 的百分比的增加, 所付出的 EOS 租金价格也将呈指数增长。

支付了CPU时间租金的这部分EOS,将被分发到 EOS 通证(token)抵押池中(例如REX池)。

通过将抵押 EOS 所获得的收入和租赁 CPU 所消耗的费用相互抵消,该模型可以将 CPU 分配给抵押了 EOS 的持有者。

假设你所抵押的 EOS 每个月获利 1个 EOS,你可以在租赁市场花费 1 个 EOS 并获得一些 CPU。CPU 数量将根据当前价格动态变化。显然,一些 CPU 租赁的收入将根据抵押的百分比直接返回给你。

通过租赁分配全部的 CPU,不再有动态的通证供应影响到 CPU,也不需要担心人们从 REX 中提取 EOS 会对 CPU 租赁市场及其定价算法造成冲击。

此外,CPU 时间变得不可转移,因为所有 CPU 时间都是通过从系统合约中租赁而不是通过抵押EOS来分配的。这消除了 CPU 定价的投机成分,并确保每个人都在相同的资源模型下进行操作。

可以用一个简单的等式,来确定租用一定比例的 CPU 用 30天所需要支付的费用。

下面的图表显示了租用 1亿 EOS * 2% 所需要付出租金。

根据这个等式,一旦网络出租率达到大约10%,租金收入将超过 EOS 通胀率。EOSIO 治理的未来版本中,可能会选择向出块节点支付一定比例的租金收入,这将使他们利益一致,能够尽力提升网络效用价值。

原则上,社区可以使用任何常数指数来确定价格曲线。较高的指数将允许更大比例的网络被廉价利用,但是当利用率接近100%时,价格将更快地提高。理想的指数应该平衡供给和需求,使得总租金收入减去区块链运营成本之后的差额最大化。

因为那些租用 CPU 的人符合帕累托分布的二八法则,我们预计会有大量的大户会同时租用和/或更新CPU。这可能会导致租金突然下降,然后上升。

如果没有一个“订单簿”来捕捉租金下降的趋势,可能会给较大的租户带来不受欢迎的定价优势。因此,我们建议租金下降的速度要比上升的速度慢。给定一个定价函数P(TotalUsage),新CPU租金的发行价格将是MAX(P(CurrentUsage), P(DailyAvgTotalUsage))。

(备注: 这里的 MAX(P(CurrentUsage), P(DailyAvgTotalUsage)) 的算式表示的意思是分别使用定价函数,对当前使用量(CurrentUsage)跟每日平均用量(DailyAvgTotalUsage)这两个作为参数来计算获得定价,然后,比较这两个价格,取其中的较大的值)。

如果价格过高,那么当前的总使用量将下降,随着时间的推移,DailyAvgTotalUsage(即每日平均用量)也将下降。如果当前的总使用量突然增加,那么价格将迅速攀升,以防止 CPU 的供应被消耗。

我们可以考虑这个算法的一些其他版本,比如在 CurrentTotalUsage 大于 DailyAvgTotalUsage 的时候,将 DailyAvgTotalUsage 重置为 CurrentTotalUsage。

这将导致平均算法对需求增长做出快速反应,而在没有新需求的情况下,仍会在24小时内逐步降低价格。

我们可以计算一下,如果用户希望获得 CPU 总量 1%,使用30天的时间,需要付出的成本可以通过如下方式计算:

MAX(P(CurrentTotalUsage+1%), P(DailyAvgTotalUsage+1%)) — MAX(P(CurrentTotalUsage),P(DailyAvgTotalUsage))

更简单的表述方式是:

他们所需要支付的成本,等于在新的利用率水平上预计将收取的租金收入总额,减去当前利用率收取的租金收入总额的差值。

(备注:就是说,假设原先全网的 CPU 总量使用率为10%, 在新增了 1% 的CPU 总量使用情况下,全网的 CPU 总量使用率为 11%, 用户需要支付的租金,等于在11%下的租金收入总额,与 在 10% 的租金收入总额的差值。通过这种方式,用户支付租金,为提升了 CPU 的租用率部分而买单)

REX 如何升级?

新设计之所以成为可能,是因为与REX不同,“CPU”不可能从租赁市场中撤出。

REX 算法必须平衡借贷双方的需求。在这一过程中,贷款人最终要等30天的租约到期,或者潜在的租客最终没有任何EOS可供出租,因为贷款人要求收回他们的EOS。

在当前的REX模型下,没有一种简单的解决方案能够为租借双方提供足够的简易性。

解决这一问题最直接的方法是通过随时间“增加 CPU 供应”的方式,逐步将当前模型下分配的 CPU 百分比转移到新模型。

这可以通过在系统合约中实现一个新的操作来实现,该操作允许通过租借方式分配 CPU,然后分配“ 虚拟 的抵押 CPU”,从而将总的CPU 抵押量(不管是拥有的还是租借的)稀释为现有的 CPU。

这并没有增加EOS的供应,相反,它只是调整了决定分配给每个帐户的 CPU 比率的参数。

目前,系统合约将抵押 EOS 获取的 CPU 的比例设定为 1:1,但是底层的 EOSIO 协议只知道相对的CPU权重(分配给你帐户的权重,除以分配给所有帐户的所有权重之和)。

如果新资源市场创造的“CPU”供给逐渐增长到 EOS 抵押方式所供给 CPU 的100倍,那么 99% 的 CPU 可用时间,将由新的租赁市场有效控制。最终,当所有人都转向 CPU/NET 租赁市场时,EOS 抵押以获取 CPU和NET 的方式可能会被弃用和移除。

之后,新 CPU 租赁市场的收益就可以像姓名拍卖和 RAM 市场费用一样,直接投向那些在 REX 中抵押 EOS 的人。这个解决方案可以使 CPU 立即可用,而且价格合理。随着时间的推移,REX市场的利用率将下降,新的 CPU 市场将取而代之。

如果这一方案被社区采用,那些拥有 EOS 并抵押给自己账号的用户,将不得不转向新的市场去租用 CPU,因为他们现有的持有 EOS 获取资源的方式,将在整个 CPU 市场中占有越来越少的份额。我建议在一年的时间内将 CPU 逐步引入新市场,让人们有机会调整他们的 CPU 资源策略。

最终,抵押 EOS 获取 CPU 的方式,和从 REX 租用 EOS 的功能,可能会因为新提议的 CPU 市场而被弃用。

这一方案不仅适用于 CPU,也可以用在 NET 资源中,后者有着同样的动态机制。

终端用户的可用性

许多应用程序和钱包已经采用了 CPU 的代付方式,为终端用户提供了方便,使得他们无需考虑租用或抵押 EOS 获取 CPU。

在有些平台上,应用程序的团队会从云服务提供商那里租用服务,通过订阅、广告或产品销售等多种策略来涵盖成本,这一提案也反应了类似的方式。

结论

本文所建议的 CPU 租赁市场,将有助于稳定 CPU 价格,降低 CPU 租赁成本,提高 CPU 使用中的成本的确定性。

CPU和 NET 资源所获得的租金收益,仍然可以分配给 REX 的投资者。然而,最大的变化是给 EOS 作为共享 CPU 的筹码,而 EOS 使用者将逐渐失去永远 “拥有CPU”的能力。

另外,由于服务提供商能够为其用户代付 CPU,这将使基于 EOSIO 的网络成为市场上最容易使用和最具成本效益的解决方案。


免责声明:EOSwriter 不为本页面内容或产品背书,我们尽全力为读者提供所能获得的重要信息。在做与本文内容相关的决策前,建议读者进行完整的独立研究分析,并为自己的决策负完全的责任。在此声明,本文非投资建议。