首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EOS DAWN 4.0的RAM 究竟是什么

本文试图解读以下几个问题:

RAM是什么?

RAM能否被交易?

如何获得RAM资源?

释放RAM是什么意思?

RAM能否被转让?

1%的RAM手续费是什么意思?

RAM的价格如何决定?

如何遏制RAM市场的投机行为?

侧链与主链的RAM价格是否一样?

RAM是什么?

RAM一般被称为内存 ,在EOS软件平台上对应于内存数据库资源。作为DAPP开发者,RAM是一项宝贵的资源,数据库记录需要消耗RAM。

如何获得RAM?

内存资源与带宽资源的使用是完全不一样的。

一个账户可以不需要充足的EOS也能获得相对应的带宽资源,可通过其他账户授权即租赁EOS,且该过程无需手续费。

而如果一个开发者要使用内存资源,该账户必须要有充足的EOS抵押才可以,并且在这个过程需要收取手续费。

在我们EOS21天打卡计划的第四天有简要提及:

RAM一般被称为内存 ,在EOS软件平台上对应于内存数据库资源。作为DAPP开发者,RAM是一项宝贵的资源,数据库记录需要消耗RAM。

RAM能否被交易?

RAM是不直接参与流通的,这个说法的实质是指因获得RAM抵押的那部分EOS能否被交易。

要使用RAM资源,须抵押一定的EOS,在抵押期间,EOS被锁定,不能再交易或者出租。

如果该DAPP需要一直使用这部分RAM,那对应的EOS也将会被一直锁定住。如果RAM只是使用一段时间,以后不再需要了,则可选择释放这部分RAM,收回EOS,此时可用于交易或者出租。

举个例子,(假设1EOS等于1KB的RAM)DAPP开发者账户抵押100 EOS获得了100KB的RAM,其中有40KB的RAM用来存储DAPP用户的相关数据。假如这些数据无需保存的话,那么可以收回40个EOS,释放40KB的RAM。

在抵押EOS获得RAM或者释放RAM收回EOS时,都要收1%的手续费。(而当使用EOS是为了出租带宽时,则无须手续费)

EOS Token的流通可参考下图:

RAM的价格由什么决定?

基于市场的供需模型决定。如果RAM稀缺,则要买入RAM,就需要锁定更多的EOS;卖出RAM也能获得更多的EOS。

EOS如何实现对内存使用的限制?

合约帐户的当前内存使用量将存储在合同帐户的常规数据库中,而不是像带宽和算力限制那样使用单独的数据库。

EOS.IO数据库管理的代码可以轻易拒绝那些试图用更多的内存,而不是根据通过当前持有EOS代币来获得允许的交易。

“ 这种设计的理由来自以下事实。首先,直到合同完成执行后,才知道其中数据库内存使用量的实际净变化。

其次,拒绝使用过多数据库内存的交易需要至少两条信息:合同执行后合同使用的数据库内存量,以及合同帐户中持有的 EOS代币数量。持有的代币信息存储在合同账户的常规数据库中,符合一定条件下,EOS合同可以取消账户中持有的 EOS代币。

因此,确定是否拒绝使用过多数据库内存的交易,最终会要求锁定交易中使用合约帐户的 EOS代币。所以,将内存使用信息与持有大量 EOS代币放在同一个地址,同时在WebAssembly执行期间要求锁定合同帐户时,可能才会有意义。”

以上是BM的解释,简单的说,数据库会对一个账号的进行追踪,如果它想超过账户中被锁定EOS分配的RAM ,交易就会被拒绝。

DAPP开发者账户要使用内存来运行相关智能合约,必须抵押一定数量的EOS,假如EOS不足,EOS.IO拒绝那些占用内存的交易。

内存投机什么意思?

低价时保留内存,在价格变贵后卖出内存来获利。

如何遏制内存投机?

但大量买入内存时,账户中相应的EOS将会被锁定,不能用于流通也不能用于出租带宽,将会损失EOS升值以及租赁带来的收益。

RAM不可直接转让,只能是以当前价格售出内存,而这个售出是要收取1%的手续费,这意味着RAM价格变贵后,对应的手续费也会上涨。

受供需模型限制,EOS DAWN4.0提到允许超级节点讲内存从4TB升级到16TB,所以抑制了早期大量囤积RAM的获利行为。

EOS DAWN 4.0原文

新的内存分配模型 | RAM Allocation Model

测试中我们发现了EOSIO系统合同分配RAM(数据库空间)的方式会导致未来资源的短缺。我们改用了一种基于市场的分配方法,使用Bancor算法。

我们的计算表明,如果1TB RAM按比例分配给token持有者,那么每字节的成本将是0.018美元(假设每个token20美元)。事实上,大多数token持有者实际上并不需要使用他们可能拥有的RAM;因此,我们最初对RAM的定价是每字节0.000018美元(假设每个token20美元)。创建一个新帐户需要大约4KB的RAM,这意味着将花费约0.10美元。随着RAM被分配,价格会自动增加,这样在系统耗尽RAM之前价格就会接近无穷大。

在Dawn 3.0系统合约中,您只能以您支付的价格出售RAM。 目的是抑制囤积和投机。 这种方法的缺点那些廉价购买RAM的人在RAM变得更紧缺后,没有为其他用户腾出RAM的经济激励。在Dawn 4.0之下,系统合约现在以当前市场价格购买和销售RAM分配。 这可能会导致交易商在预计明天可能出现短缺的情况下购买RAM。 总的来说,这将导致市场随着时间的推移平衡RAM的供需。

随着时间的推移,摩尔定律将允许超级节点升级到4TB甚至16TB的内存,并且这种供应增长将逐渐降低EOSIO RAM市场价格。

“ 供应量的增长,使得囤积RAM的获利可能性大幅降低了,保证了RAM的正常流通。”

对智能合约开发者的影响 | Implications for Smart Contract Developers

作为一名智能合约开发者,RAM是一项宝贵的资源,数据库记录需要消耗RAM。考虑到RAM的成本,将存储在内存数据库中的数据量减到最小,并且设定你的应用程序在用户使用完后释放RAM将是非常重要的。

例如,Steem仅在RAM中存储了1周的内容,因此总体的量大小不会随着时间增长而增长。

“ 如果DAPP的开发者要长期占用内存资源,那么成本会非常高。通过经济机制,使得开发者尽可能的减少内存资源占用,或者有足够的经济激励来释放内存。”

尽量遏制投机 | Minimizing Speculation

那么现在形成了一个RAM市场,投机者或许想要利用RAM价格的波动性获取盈利。而 EOSIO 系统合约设定RAM不可转让,并收取1%的交易费用。这笔费用的结果是通过将其退出市场来抵消Token 的自然通货膨胀。

如果 RAM 的年度交易量等于 Token 供应量,则所有块生产者奖励的100%将由 RAM 市场费用支付。

“ 1. 这里的RAM不可转让是指RAM资源不可以直接转让,只能通过锁定EOS来获取RAM资源。而这个过程将会收取1%的手续费,这个机制的设定类似于以太坊上gas的限制。

2. 年度交易量如果等于Token供应量,那么对应的手续费将可用于抵消因奖励超级节点所带来的通胀。”

BM 针对 RAM 的回复

问:为了得到一些合同的内存,我应该为它付钱,对吧?那么所有这些买卖都在哪里出现?我要如何实现以一个价格买入 RAM,然后以另一个价格卖出呢?

BM回复:“买入RAM”是指“锁定 RAM 的资源”,社区有两个方案可以选择:

“解锁RAM资源”--按此前买入RAM时的价格,退还相关费用;

“售卖RAM”--按当前市场RAM的价格,退还相关费用。

如果是方案一的模型,对于那些早期以便宜价格买入RAM的人来说,没有经济动机释放内存。而人们可能在早期买入超过他们需要的内存。

如果是方案二按市场供需“买入/卖出”RAM的模型,我们支持“RAM的准备金机制”,在100%储备金的机制下,将使价格远低于EOS的1%购买1%RAM的价格。这让市场自然设定价格并管理稀缺性。

主链、侧链的 RAM

主链与侧链的RAM是独立的,每条链上的运行的智能合约只访问自身的RAM。

主链、侧链上的RAM价格不同,因为RAM的价格是由该链上的供需所决定。显然,在主链上的DAPP开发需求将要大的多,因此主链的RAM会更贵;而DAPP的开发者也可以选择在侧链上开发,到时会有许多侧链,选择价格便宜的侧链将会节约成本。

无论是在主链还是在侧链上购买RAM,都是使用相同的EOS Token。

= END =

长按识别下方二维码

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180509G1OQW400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券