加载中 ...

区块链资源定价(下)

2019-02-14 11:25 编辑:btc268.com 来源:区块链资讯

  每晚八点,

  我们在社区分享知识。

  乐乐:sensus113 

   美果大冰:xj73226

  备注入群,谢谢!

  5. 交易费与拍卖理论

  我们已经在摘要中讨论了资源定价政策,但还没有讨论实施的具体细节。 机制设计领域在‘哪种类型的拍卖在什么情况下表现更好’这个topic上已经取得了长足进展,而且大部分都跟交易费市场有关。

  目前为止,几乎所有的区块链交易费市场基本上都是这么个套路:交易发送人在广播交易时费用(高低)自定。由区块举荐人将交易打包入块,这里我们姑且认为举荐人随机选择交易打包。由于区块举荐人受重量上限限制,意思是说提前规定了每个区块能装多少东西,自然,会打包费用比较高的交易。

  机制设计的行话中,这叫‘第一价格拍卖’,特点是“怎么出价都可以,但是赢了必须支付对应的款项”。当然了,这种拍卖方式通常广受诟病,原因是需要买家(区块链中就是交易发送人)想出复杂因此低效的策略。譬如,假设某个买家愿意花1块钱让自己的交易被打包,所以,出价多少合适?答案肯定是不超过1块钱,对吧,但具体低多少?其他人都出0.05块的时候,某人出0.06即可。但若是其他人的出价是那种平均0.1,标准差0.05,然后右侧还有个肥尾的复杂分布时候,计算瞬间就复杂了,而且还没有有效的均衡。[16]3

  有种比较典型的替代方案是出售多种物品时的第k价格拍卖:所有人支付的费用相同时,费用最低的交易被打包。4 此机制支持了一种简单且最优的买方策略:交易发送人愿意花x块钱让自己的交易被打包时,则出价x。最后,区块中的最低出价低于x时,出价x的交易被打包(且支付的费用低于x,所以大家都高高兴兴的),这群人即便出价比较高,并不会影响其最终支付的金额。区块中的最低出价超过x时,交易打包失败,但是这群人也还是高高兴兴的,原因是人家本来也没准备花更多的交易费,自然不愿意赶鸭子上架一样被迫掏更多的钱让交易被打包。

  然而,第k价格拍卖存在另外一种严重的缺陷:这种机制与拍卖师(即区块举荐人)在激励上并不兼容。首先,向区块举荐人提出适当陡峭的需求曲线时,用某些交易费相当豪的‘假’交易挤(替换)掉交易费给的不是很大方的内些来填充区块,即便这意味着会丧失掉这部分收入,但也同时提高了整体交易费水平,所以显然也是符合举荐人利益的。

  3 现有区块链网络中第一价格拍卖的低效率,已经导致了很多用户和商家多付费的情况[17],指导用户使用辅助“费用估算”工具的文章见[18]。

  4 说按理说,所有人应该支付的费用应该是交易未被打包的最高价,但是实施起来就太困难了,且出售物品足够多的时候,最高价与最低价的差别就变得非常小了。

  还有个比较严重的问题是举荐人与某些交易发送人相互勾结。譬如,举荐人与低费用交易发送人(假设有个什么实体,比如交易所或者矿池,专门发送此类交易,而且与之协商相当容易)串通好,这群发送人一般是发送费用为flow的交易。举荐人要求他们先发送费用为fhigh的交易,后面再返还fhigh – flow/2。 那么现在,举荐人的收入就更高了:举荐人通过“假交易”策略从“矩形”费用收入不断上升的高度中获益(见上图),同时还会从正常的低费用交易中获益。5

  因此,第一、第二价格拍卖都不甚令人满意。 但是注意,这些问题是拍卖固有的,与固定价格销售无关。 倘若支付某种minFee便能被包含进区块链,交易发送人大可自行为自己的交易费定价。设用户为使交易被打包愿意支付费用v。用户会检查v是否大于minFee;v > minFee时,用户出价minFee ∈(向出块人提供包含交易的轻微激励); v < minFee时,不发送交易。 这种策略可以说非常简单了,也不用参考其他人的出价,所以对交易发送人来说是最佳的。

  5 详见[19]、[20]。

  6. 此处省略些许难懂的一万字。

   

  7. 计算与带宽中的异构资源

  上述重量限制分析中假设的是单个标量足以量化交易对网络施加的负担。而实际上来说,交易会消耗若干异构资源:计算和状态I/O(这个可以分到“计算”类)、带宽与状态存储。有鉴于每种资源都有不同的属性,最优定价方案应该充分考虑到这些差异。

  我们先看计算与带宽。计算与带宽影响节点的计算负荷以及“叔伯率”;因此,计算与带宽似乎都会在重量较低时受线性或次线性社会成本机制影响;重量较高时受超线性社会成本影响。产生超线性社会成本的因素相互独立时,计算用gas上限,带宽用块大小限制这种具体问题具体分析的方式可能会是谨慎之选;然而,由于叔伯率本身引发了大部分的超线性,且计算与带宽对叔伯率的影响似乎又是附加的,因此一套组合拳(限制)似乎成了首选。

  这里有个问题值得一提:能否以某种方式在协议中测量出计算与带宽的社会成本,或者能够对计算与带宽水平的某个限制值(好比最大值)做出提示,好让一般的客户端就能否安全处理心中有数。工作量证明挖矿难度直接给出了区块链原生加密货币与至少一种计算之间的兑换率:区块链的出块奖励为R,挖矿算法为H,难度为D时,成本一般是cost(H)  ≈ R/D。

  但是,这种方法面对诸如专用硬件等的技术进步时则极其脆弱。 [22]和[23]表明,目前用于比特币挖矿的ASIC与GPU硬件之间在挖矿效率上的差距约1000-5000倍,而且CPU与GPU之间还有非常大的差距。这表明,若使用挖矿难度作近似值确定客户端的计算能力,进而确定比特币块大小限制的话,最初的1MB块大小限制现在早就已经到了几千兆字节。同理,把区块重量限制定成某个基于当前ASIC和CPU(效率)差10000倍的假设的最佳值的话,未来由于FPGA消费级硬件等自动适配半专用硬件的广泛使用或者干脆因为通用硬件接近热力学极限,专用硬件的效率不可能再有突飞猛进的发展时,随专用设备优势降低,这个限制有可能会100-10000倍的低于最佳值。

  基于工作量证的成本度量还另外一个缺陷:cost(H)仅是做一次计算的成本。而社会成本又很大程度上取决于网络中的节点数量,由于每个节点都要运行计算,这个衡量起来就非常困难了。这个问题可以通过机制变更规避掉,譬如规定矿工计算不可外包工作证明(non-outsourceable proof of work)[24],同时根据一段时间内提交的最高工作量来设定计算的gas上限,但是注意,这种方法对专用硬件问题不起作用。也可以尝试着激励交易提交人提交这些证据,但是这样又会激励用户使用那些集中保管私钥的钱包。

  还可以尝试用带宽证明来测量带宽[25],不过一样存在鼓励集中的风险。根本上说,激励兼容地测量节点的能力水平就是要激励节点们揭示自己能力,显出的能力越高,奖励也越高。所以,这种方式也会固有地刺激由专用集中硬件驱动的中心化。

  8. 状态存储定价

  状态存储定价属于一种与计算、带宽和状态IO全然不同的负担(就叫做另一种计算好了),原因很简单:后面这一撮成本属于由于验证人以及当时在线节点承担的一次性成本,而状态空间是须由所有全节点储存进而承担的成本。

  比特币中,填充存储并无明确费用;交易按字节收费,填充存储则是间接取费的,原因是填充新存储槽时(平均消耗61个字节[26])需向交易添加约34个字节[27](对于“常规”输出至少是这样的;非标准输出的话可以是9个字节[28] [29]),因此对单个区块内UTXO集的大小的增加是有个极值的。最近的Segregated Witness分叉中包括了一处修改,其中签名数据按每字节1个重量单位取费,非签名数据按每字节4个重量单位取费,至多不超过400万个重量单位;如此相对降低了花费UTXO的成本的同时提高了创建新UTXO的成本[30]。

  以太坊中,那些影响存储的操作的gas成本方案则更复杂,影响存储大小的操作有两种类型:

  1. sSTOre操作码,该操作码在合约的存储中保存一个值。sstore重写当前值时,消耗5000 gas;为存储添加新值时,消耗20000 gas。 使用sstore清除当前值时(即不再保存于存储),消耗合约5000 gas,同时返还15000 gas至交易发送人。

  2. Account creation。账户的创建7有三种方式:

  ?使用create 操作码创建合约(32000 gas 代码每字节200 gas)

  ?使用交易创建合约(53000或32000 gas 发送交易基准成本21000 gas)

  ?送到ETH至之前不存在的账户(从合约中发送时,25000 gas;从交易中发送,基准成本21000  gas)。

  Gas成本以存储中每字节≈ 200 gas的目标计算,估算出每种存填充操作添加至存储空间的字节数,将两个值相乘,然后还要考虑到其他成本,如计算、对历史大小的影响等。

  7 也可以通过sELFdestruct操作码删除账户,消耗合约5000gas,同时返还交易发送人24000 gas。

  然而,比特币和以太坊的方式都存在四处大的问题,进而导致非常不理想的结果:

  ? 绝对意义上说,存储过于便宜。譬如,让以太坊网络目前的用户下载并处理一个字节需要68个gas,但200 gas就足以让现在和将来的所有用户做同样的事情(同事永久存储数据)

  ? 与计算、带宽和磁盘IO相比,存储的社交成本更加线性,特别是在中短期。正常情况下存储每天增加1 MB,但是可能某个月每天只增加100 kB,却在最后一天激增了27 MB,存储增长忽然波动这么一下并没有真正影响到任何人。

  ? 没什么动力清理存储空间。极端情况下,根据费率不同,比特币状态[31]中有10-60%的UTXO因为值太低,清理起来相当不合适,不如留着不动。大多数创建的以太坊合约也都不销毁,而且多是没什么“存储卫生观”的。

  ? ‘清除趁早观’尚未形成。即使清除存储有退款,目前来讲能退款效率什么样也不好说。

  第一个问题可以直接通过让存储变贵来解决。然而,只是让存储变贵的话,短期的使用成本会变得相当高。也可以提出基于时间的退款方案,意思是存储槽清理的越早退款越多。有个唯一的无套利方案是定义当前时间的某个递减的非负函数F(t)(好比,F(t) = h*e?kt),在t时间填充存储槽收取F(t)的费用,在t时间清理存储槽返还F(t)的费用。8 但是,这种方法的资本效率也是相当低的,意思是使用存储首先需要大量的存款,而且还假设存储的社会成本持续降低且降低的速度足够快所以才能是收敛积分。

  8 不同的存储槽可以有不同的F(t)函数时,在任何F’1(t) > F’2(t)的点上,都存在套利机会,意思是F1的持有者(较慢下降的函数)不需要自己的存储槽时,可以将存储槽的使用权分配给其他槽的持有人,由其他槽的持有人进行清除。

  有一种解决方案不存在这些问题,说的是实施一种基于时间的存储维护费(有时也叫“存储租金”)。最简单方法就是:每个帐户对象在状态中的消耗按每个区块每字节X硬币取费。帐户中的硬币低于支付pokeThreshold区块所需的金额(好比,pokeThreshold = 500)时,任何人可以通过“戳一下(poke)”这个帐户的方式将其从存储中删除,同时领取价值k*pokeThreshold个区块的租金作为赏金,其中 k∈(0, 1)。但是实现上述方法则不太实际,原因是通过区块通过账户并减少自己余额的开销相当巨大。但是,可以通过惰性计算的方式计算出来:

  ? 所有帐户存储个另外的数据字段,

  LastBlockAccessed

  ? 帐户的当前余额可以计算成:

  balance?perBlockFee*sizeOf(account)*(curBlock?LastBlockAccessed)

  ? 此数值低于

  perBlockFee*sizeOf(account)*pokeThreshold时,可以戳一下此账户调

  ?帐户状态被修改时,根据上述公式更新其balance,

  并将当前区块编号设为LastBlockAccessed

  假设想让维护费随时间变化。对于所有块高度h,我们在存储中保存

  。将当前余额计算为

  balance?sizeOf(account)*(totalFee[curBlock]?totalFee[LastBlockAccessed])

  其中

  totalFee[curBlock]?totalFee[LastBlockAccessed]可以理解成

  但是,我们也可以将维护费用设成一个永久不变的特定值(好比,每年每字节10-7ETH)。首先,中短期的时候,存储使用的社会成本显然是近乎完美线性的;长远来看,还会更线性。区块链中没有类似带宽与计算成本的自然渐近线的东西,意思不存在叔伯率达到100%的某个点;即便以太坊区块链的存储变成每天增加10 GB,区块链节点也会很快降级成仅在数据中心上运行,区块链仍然可用。事实上,若假设节点存储容量的分布与康奈尔大学显示带宽分布的研究[6]一致,则NodeCount(W) = 1/W,同时假设用对数效用函数做节点统计,则D(x) = log(x) = ?log(W),那么节点集中化产生的社会成本部分(component)大致为C(W) = log(W),或C’(W) = 1/W ,这个次线性就相当陡了。

  其次,开发者与用户能够提前确定任一给定合约的最短“存活时间(TTL)”时,开发者与用户的体验也会大大提升。可变费用是没有这种属性的,但是固定费用有。第三,由于加密货币价格要比交易费更稳定,固定费用能够帮助提高加密货币、法币计价条款中价格的可预测性。第四,固定费用十分简单,直观的讲是好理解,也可以说成是具有低Kolmogorov复杂性。

  9. 存储定价与用户体验

  对于简单的加密货币来说,特定的UTXO或帐户因为自己的余额被存储维护费‘掏空’进而被删除的危害其实不难理解,同时不同帐户或UTXO之间不会产生复杂的交互效应。但是对于智能合约相当之复杂的区块链来说,租金确实会带来更多的复杂性,原因是出于某些原因某个合约的价值远高于合约中放着的那点ETH(或是它种协议级基础货币),譬如合约作为软件库使用、作为用户的自定义资产(ERC20、 ERC721等)、与其他智能合约的活跃关系等等。因此,忘记支付维护费直接导致程序突然不可用的风险确实蛮大。

  这种情形一般是可以提前检测到的,若实际发生,可以考虑这个止损Plan B:休眠/唤醒方案。 账户中余额不足无法支付维护费时,被从状态中移除(而非删除),相当于进入休眠状态。对于任意休眠合约,任何人可提交能证明以下两个声明(为真)的Merkle证明:

  1. 给定的休眠合约确实存在。

  2. 处于此休眠状态的合约尚未被唤醒过(一个合约不能被唤醒两次)。

  设置条件(2)是为了防止双花攻击,意思是某个合约之前休眠过一次,后来被叫醒了,然后又睡了,显然不能用新近一次的冬眠证明唤醒较老的那次休眠(看图看图):

  若合约在较老的那次休眠时持有的资金比较新的(休眠)多,双花攻击是可以凭空造币的。第二个证据可以这么操作。将MinInterval定义为存储槽可用的最小时间长度(好比,1周):

  ? 向付费逻辑添加条件:合约被唤醒时,至少持有

  (MinInterval pokeThreshold) *sizeOf(cONTract) *feePerBlock 个ETH。提现后的合约余额不得低于此阈值。

  ? 事先未唤醒证明

  (proof of non-prior-waking)包含一个每MinInterval指向合约地址一次的Merkle分支。

  调整MinInterval则是种tradeoff:小值意味着短期启动合约的成本也比较低,大值则意味着唤醒所需的见证人数据大小会被压缩,同时也会降低需要被存储的不断增长的历史状态根数量。MinInterval = 一周,状态中有230个账户的话,唤醒十岁的合约需要32*log(2 < sup > 30 < /sup >)*10*365.242/7≈50万字节;MinInterval = 一个月的话,相同操作所需的字节数会降到约11.5万(115200)字节。

  10. 结论

  经济分析可用于显着改善公共区块链内资源使用的激励一致性。 简单的一维重量限制模型通常导致相对于社会成本高度不匹配的价格,结合了“庇古税”与诸如重量限制的限额交易的混合方案则能够显著改善现状。特别是存储市场本来就与其他类型的资源市场不同,因此也应当被单拎出来具体分析。

  更多的经济分析和计量经济学研究将有助于制定出能够更好地降低成本同时避免滥用公共区块链资源的下一站机制。

  References

  [1] (2018). Bitcoin wiki: Weight units. URL https://en.bitcoin.it/wiki/Weight_units.

  [2] Knight FH (1921) Risk, uncertainty and profit. Courier Corporation.

  [3] L′epissier A, Barder O (2014). A global carbon tax or cap-and-trade part 1: The economic arguments. URL https://www.cgdev.org/blog/global-carbon-tax-or-cap-and-trade-part-1-economic-arguments.

  [4] Weitzman ML (1974) Prices vs. quantities. The review of economic studies 41: 477–491.

  [5] Wikipedia (2017). Runaway climate change — wikipedia, the free encyclopedia. URL https://en.wikipedia.org/w/index.phptitle=Runaway_climate_change&oldid=776345569. [Online; accessed 5-May-2017].

  [6] Kyle Croman IEea Christian Decker (2016). On scaling decentralized blockchains. URL https://fc16.ifca.ai/bitcoin/papers/CDE 16.pdf.

  [7] Yonatan Sompolinsky AZ (2013). Accelerating bitcoin’s transaction processing: Fast money grows on trees, not chains.

  URL http://citeseerx.ist.psu.edu/viewdoc/downloaddoi=10.1. 1.433.6590&rep=rep1&type=pdf.

  [8] Ayelet Sapirshtein YS, Zohar A (2015). Optimal selfish mining strategies in bitcoin. URL https://arxiv.org/pdf/1507.06183.pdf.

  [9] Buterin V (2018). Estimating cryptocurrency transaction demand ELAsticity from natural experiments. URL https://ethresear.ch/t/

  estimating-cryptocurrency-transaction-demand-elasticity-from-natural-experiments/2330.

  [10] Haab T (2008). The long run elasticity of demand for gas. URL http:

  //www.env-econ.net/2008/06/the-long-run-el.html.

  [11] Bradbury D (2014). Bitcoin transaction fees to be slashed tenfold. URL http://www.coindesk.com/bitcoin-transaction-fees-slashed-tenfold/.

  [12] Jameson H (2017). Recommendations to miners to change gas limit and gas price settings. URL https://www.reddit.com/r/ethereum/comments/6ehp60/recommendations_to_miners_to_change_gas_limit_and/.

  [13] Buterin V (2017). Tweet. URL https://twitter.com/VitalikButerin/status/871218258212290560.

  [14] Bradbury D (2014). Bitcoin transaction fees to be slashed tenfold. URL https://www.coindesk.com/bitcoin-transaction-fees-slashed-tenfold/.

  [15] Southurst J (2017). Bat token sale causes hours of ethereum network delays. URL http://www.bitsonline.com/bat-sale-ethereum-network-delays/.

  [16] Tim Roughgarden ET Vasilis Syrgkanis (2017). The price of anarchy in auctions. URL https://theory.stanford.edu/?tim/papers/jair.pdf.

  [17] Town S (2018). Bitcoin transaction fees skyrocket as bithumb cleans out hot wallets due to hack. URL https://cryptoslate.com/bitcoin-transaction-fees-skyrocket-as-bithumb-cleans-out-hot-wallets-due-to-hack/.29

  [18] Hertig A (2018). How to save on bitcoin’s soaring fees. URL https:

  //www.coindesk.com/save-bitcoins-soaring-fees/.

  [19] Shengwu Li MA (2018). Credible mechanisms. URL https://ssrn.com/abstract=3033208.

  [20] Rothkopf MH (2007). Thirteen reasons why the vickrey-clarke-groves process is not practical. URL https://cs.uwaterloo.ca/?klarson/teaching/F08-886/Rothkopf.pdf.

  [21] Chicago P (2018). URL https://gastoken.io/.

  [22] (2018). Bitcoin wiki, non-specialized hardware comparison. URL https:

  //en.bitcoin.it/wiki/Non-specialized_hardware_comparison.

  [23] (2018). Bitcoin wiki, mining hardware comparison. URL https://en.

  bitcoin.it/wiki/Mining_hardware_comparison.

  [24] Andrew Miller JK Ahmed Kosba, Shi E (2014). Nonoutsourceable scratch-off puzzles 

  Nervosfans社区正在整合资源

  为想创建项目的朋友搭建创业平台,

  请感兴趣的朋友加乐乐微信:sensus113,

  谢谢!

  Nervos CKB 唯一官网:Nervos.org

  欢迎关注Nervos Fans

  Nerovs CKB 爱好者社区

  Nervos Fans如下频道:

  NervosFans twitter:@nervosfans

  NervosFans 微博:@NervosFans

  NervosFans 微信公号:Nervosfans

  入群请加乐乐微信:sensus113

  美果大冰微信:xj73226

  备注入群,谢谢!

  长按识别二维码

  关注我们

关键词:比特币新闻 币牛牛

转载自比特币新闻网(www.btc268.com),提供比特币行情走势分析与数字货币投资炒币最新消息。

原文标题:区块链资源定价(下)

原文地址:http://www.btc268.com/qkl/zs/6810.html

本文来源:区块链资讯编辑:btc268.com

本文仅代表作者个人观点,与本网站立场无关。

本网站转载信息目的在于传递更多信息。请读者仅作参考,投资有风险,入市须谨慎!

'); })();