揭开 EOS 资源的面纱(一) CPU 设计背后的经济原理

揭开 EOS 资源的面纱(一) CPU 设计背后的经济原理

EOSC 主网

朝着去中心化的高性能智能合约平台的方向持续演进

EOS 是一款以“降低开发者成本,让用户交易免费”为目标的公有链。也就是说用户在交易中,不需要收取交易费。为了做到这一点 EOS 设计了 CPU、NET 和 RAM 三种资源。用户在拥有这三个资源之后才能免费交易。但是绝大多数用户来说分不清这些资源是什么。尤其在近期 EIDOS 活动中,很多用户的 CPU 质押不足,导致无法转账。这究竟是为什么呢?本文将详细讲解 EOS 中的 CPU 究竟是什么?以及 CPU 资源设计背后经济原理。

什么是 CPU 资源 ?

我们在 EOSIO 上每一次交易时,我们的这笔交易数据会被超级节点(BP)们执行和检查 , 超级节点在执行这项工作时需要花费计算时间。我们把这个所需要计算的时间的资源称之为 CPU。所以 CPU 是指节点在处理、验证交易时必须花费的执行时间,EOS 中 CPU 以微秒(μs)为单位。因为每个节点使用时间是有限的。为了合理使用每个超级节点的计算时间。EOS 设置了一套 CPU 资源的使用模型。

资源如何分配?

我们知道了,CPU 是节点在处理、验证交易时必须花费的执行时间。在 EOSIO 中 , 用户为了使用 CPU 资源可以使用 EOS 抵押来获取 CPU, (第一次注册的账户将自动购买一定比例的 CPU 资源,这也是为什么 EOS 账户注册需要收费的原因)。这个抵押过程相当于用户买了超级节点的一部分运算时间 , 那么 EOS 中 CPU 资源是如何分配的呢?这里我会把背后的原理进行详细论述,想看结论的直接跳至最后一章。

为了方便大家理解我们这里来做个类比,我们把 EOS 交易类比成火车运货。

首先,我们想一想,这列火车是否可以免费运货呢 , 如果这样就可能有用户不停的发送大量的垃圾到 B 地 , 这样其他人就用不了这列火车了 , 不能免费就要收费 , 既然收费 , 就要有个定价的方式。

假设从 A 地到 B 地有一列火车 , 每 10 分钟一班列车 , 每个列车上能装 10 吨货物 , 用户使用列车从 A 地到 B 地发送货物(我们先忽略装车和卸车的时间和列车的空间)。

首先最简单的定价方式,就是确定每吨货物需要多少钱 , 如果定每吨 100 元钱 , 那么一个用户如果需要运 3 吨货物到 B 地 , 那就需要支付 300 元运费。 这么做有什么不足之处吗?有的。如果如果当前需要运输货物的需求很少 , 那么货运火车就会空跑 , 此时火车的运力就浪费掉了 , 不如减价吸引更多的用户发货 . 其次如果当前需要运货的用户很多而发生了拥堵 , 那此时着急发货的用户也会想要多支付一部分运费来使得自己的货物可以更加快速的发到 B 地。

这种方法其实就是类似于以太坊的手续费模型 , 在以太坊中每笔交易需要支付手续费 , 用户可以自行确定自己的费率 , 此时矿工就可以根据费率来选择打包那些用户的交易。

EOSIO 是如何设计的?

在 EOSIO 中 , 用户为了使用 CPU 资源可以使用 EOS 抵押来获取 CPU。类比一下就是火车的管理者印发了一些“运费券”

假设每张运费券可以运送 10 千克的货物 , 用户要想发货那么就要得到一些“运费券”, 用户把“运费券”给火车的列车员 , 这样列车员就会有很多“运费券”, 当然列车员为了支付火车的成本 , 会把“运费券”卖给用户 , 完成循环 .。 但是考虑到火车的运力将会随着技术的发展而不断增强 , 这也就意味着按理说“运费券”的总量应该不断增多 , 而价格应该不断下降 , 否则用户就没法享受到技术发展而带来的好处。 另外 , 如果“运费券”的价格因为某些原因增长的很多 , 类比 EOSIO 就是如果 EOS 的价格增长了 (这显然是很多人所希望的), 如果此时每张“运费券”所等运送货物的重量没有增长 , 那就会反过来导致原来的用户支付不起运费 , 这显然是不合理的 , 因为列车员得到了更多的收益 , 此时他就会升级自己的火车来运送更多的货物 , 但是如果是固定的“运费券”, 那就会导致运力上涨了但是用户却用不起火车 , 另一方面 , 有些时候“运费券”的价格会下降 , 那么会导致火车的总运力下降 , 此时会出现“运费券”无法使用的情况。

EOSIO 采取的是基于使用权的资源模型 , 从上面的叙述中可以得出“运费券”所对应的重量应该是浮动的 , 这个值即和当前的需求总量相关 , 也应该和供给总量相关。

为何会 CPU 不足?

这时就有一个问题 : 如果 Alice 一次要运 5 吨货物怎么办 , 如果简单的要求 Alice 抵押更多的“运费券”, 那么如果 Alice 要抵押的“运费券”就会十分多 , 多到大多数用户没法承受 , 另外考虑到大多数时间火车都不是满载的 , 让 Alice 多放些货物也无所谓。 顺着这个思路 , 火车的管理者提供了一个“折扣率”的东西 , 如果现在是 1 折 , 那就意味着 Alice 可以运 10 吨的货物 , 如果当前火车比较空 , 那么“折扣率”就可以很优惠 , 如果火车运的东西很多 , 那么“折扣率”就不能太优惠 , 最终如果火车一直很满 , 那就不应该打折 , 所有用户只能按照自己的实际份额运货。

EOSIO 中有一个叫做 virtual_cpu_limit 的数值 , 这个数值就是这个“折扣率”, 当然 EOSIO 中这里是以用户 CPU 资源的倍率来表示的 , 恶意使用优惠的账户会被列入“灰名单”中 , 这时这个账户是无法享受到“折扣”的。

总结

所以,综上所述,我们知道 CPU 是指节点在处理、验证交易时必须花费的执行时间,而 CPU 的资源是采取的是基于使用权的资源分配方式,使用比例根据总抵押比例进行调整。简单的说,如果整个 EOS 网上有 1000 个代币被抵押在 CPU 上,而我的账户抵押了 20 个,那么我保证会拥有 CPU 总容量的 2%的使用权。同时,平时我们使用的 CPU 在空闲状态下都是通过折扣率享受的优惠状态,而在 EIDOS 这次的情况下,CPU 突然使用暴增,随之而来的折扣率也低了。所以在同样的 CPU 抵押下能够使用的计算资源变低。从而导致 CPU 资源不足。

这解释了为什么 BM 在 EIDOS 事件上的那句话:抱怨当前主网的 CPU 紧缺状态是没必要的,这就跟抱怨 Uber 用车高峰期打不到车 / 车费溢价的道理一样。不要抱怨市场通过提高价格来平衡供求,要关注实际总供给。

—— 推荐阅读 ——

揭开 EOS 资源的面纱(一) CPU 设计背后的经济原理

揭开 EOS 资源的面纱(一) CPU 设计背后的经济原理

>>> 【买币首选】DragonEx龙网交易所,买比特币和以太坊等币简单快捷,现在注册交易手续费终身4折,每天现金分红 + 30%年化理财收益,注册并中级认证即可获得抽DT奖励(100%中奖),1小时内极速出入资金。

...

...

>>【8年老牌】现在注册Gateio比特儿交易所,即可享受一年内交易手续费9折优惠+糖果空投。

...

...

相关推荐

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址