EOSIO RAM分配背后的机制

由于围绕其主要网络发布和ICO的大量阴谋,EOS最近一直在被新闻关注。在今天的这篇文章中,我们将讨论EOS中的RAM交易,这已经成为加密社区争论的一个有争议的话题。但是,在我们这样做之前,让我们先来一个小小的介绍。

资源分配和EOS

EOS计划成为一个去中心化的操作系统,Dapp开发人员可以利用它来创建和编写各种Dapps。EOS token基本上可以用作收费凭证,持有它们可以让你访问各种资源,如带宽,计算,RAM等。现在,由于这些资源稀缺,EOS不希望你长时间保留其token。

事实上,EOS Block.one背后的公司已在平台章程中明确提到,三年内不使用其代币的EOS会员将终止其账户。

因此,它的工作方式是,你可以放置​​一些EOS token并获得一些资源作为交换。但是,当谈到RAM时,这并不是那么简单。

RAM困惑

RAM是区块链的一个非常强大和关键的资源。由于可扩展性和性能如今风靡一时,你可以看到为什么“寻找更多RAM”最终将成为所有基于EOS的Dapps的最重要问题。

在Dawn 3.0中,RAM几乎与其他资源的行为方式相同。如果你使用一定数量的EOS token来获取RAM,那么你可以将其出售给完全相同数量的token。早期采用者显然会以非常便宜的方式获得资源,因为需求相对较低,但是,这是我们面临的第一个问题。

随着越来越多的用户加入EOS网络,RAM的供应量将下降,这将反过来从图表中消除需求。“供需”是微观经济学最基本的特征之一。

供需图表如下所示:

两条曲线相交的最佳点是均衡。为简化事项,随着对特定资产的需求增加及其供应减少,其价格应适当增加。

然而,对于Dawn 3.0模型,无论RAM的供应和需求如何,持有者都被迫出售他们的RAM以获得他们首先购买的相同数量的代币。因此,他们绝对没有财务和经济激励来卖掉他们的RAM。

另外,还要记住,Block.one已经在测试中确定EOSIO系统合约为利益相关者分配RAM的方式将不可避免地导致短缺。

Dan Larimer和Block.One团队意识到需要创建一个更加激励的加密经济学驱动的生态系统,这将确保RAM的可用性。

解决方案?就是RAM市场。

RAM市场

EOSIO通过使用Bancor的算法,使用基于市场的RAM分配方法。简单来说,他们正在创建一个RAM市场。就个人而言,我们认为这是一种非常聪明的方法,因为它根据供需图来调整RAM,它们最稀有的资产。

那么,这个市场如何发挥作用?

每当有人购买或出售RAM时,买方和卖方都会收取0.5%的费用(总体为1%)。这实际上为用户提供了销售其RAM的经济激励,并且它也阻止了投机性营销和通货膨胀,因为收集的费用被迅速烧毁(从生态系统中移除)。

这个内部RAM市场将确保RAM的稳定可用性,并将抵消任何未来预测的短缺。你将能够根据系统设置的价格购买RAM,这取决于当前可用的RAM供应量。

这个市场也创造了另一种有趣的方式,可以减少投机。块生产者可以在任何地方向市场添加更多RAM,并从屋顶射出供应。供应量的增加也会明显降低RAM的价格。

未来的扩张

那么,市场将来会如何表现呢?为此,让我们首先了解摩尔定律。根据Investopedia的说法:

“摩尔定律是指英特尔联合创始人戈登摩尔于1965年所做的观察。他注意到自发明以来,集成电路每平方英寸的晶体管数量每年都翻了一番。摩尔定律预测,这种趋势将持续到可预见的未来。尽管速度有所放缓,但每平方英寸的晶体管数量大约每18个月增加一倍。这被用作摩尔定律的当前定义。“摩尔定律为你提供了一个非常健康的资产未来价值指标。根据Larimer的说法,如果EOS按照摩尔定律增长,块生产者应该能够升级到4TB甚至16TB的RAM。供应量的增加将降低市场中RAM的价格。

即将到来的并行性

开发人员列表中的下一件事是扩展RAM使用率。“高性能”是区块链空间中小时的需要,为了做到这一点,它们需要RAM内可用的所有数据。一个有趣的方法是使用独立内存区域的侧链。

从本质上讲,EOSIO块生成器可以在多个链上运行,并使用相同的代币来购买RAM。生产者将通过主链上的选举进行选择,一旦当选,他们将获得进入侧链的权利。每个侧链都有>1TB的RAM,并且能够相互通信。

注意:EOS将需要自己的块生成器来运行侧链。我们的想法是为侧链进行交叉链通信以与主链进行交互。

现在这是事情变得有趣的地方,因为它开辟了两个有趣的可能性:

  • 首先,RAM的价格将从侧链到侧链不等。因此,Dapp开发人员可以选择在侧链上进行操作,以获得最便宜的价格。从本质上讲,这将在侧链之间创造健康的竞争。
  • 其次,使用区块链间通信,Dapps可以获得从其他链中购买未使用的RAM的能力。正因为如此,Block.One认为“许多应用程序更倾向于使用多链式扩展方法,因为它会降低总体成本并加快扩展速度。”

你需要多少RAM?

EOS纽约为所有EOS开发人员创建了一个非常有用的工具,可以了解他们的资源需要多少。该工具称为EOS Resource Planner,你可以在此处查看。

Planner为你提供了两个方便的工具。

  • 可根据你愿意为每个EOS投入多少EOS来计算你可以承受多少RAM,网络带宽和CPU带宽。
  • 第二个工具将告诉你需要多少EOS才能获得每种资源的特定规格。

让我们看一下每个例子。

假设你想要购买500个EOS值的RAM,400个EOS的网络带宽和300个EOS的CPU带宽。根据该工具,你将获得:

因此,根据你的资源,你将获得28369297.3280字节的RAM,552140623.3150字节/天的网络带宽和79293966.5221美元/天的CPU带宽。

你为这些资源花费了总共1200 EOS,目前的评估大致为12,960美元。

现在,假设你有资源,但你不太了解你需要多少EOS,你也可以在这里计算。

假设你正在制作一个假设的Dapp,它需要:

  • 1 GB RAM
  • 30000000字节/天网络带宽
  • 45000000 us /天CPU带宽。

对于这些资源,你将需要:

EOS总计 18924.36 + 21.73+ 170.25 = 19116.34

目前估值为:$200721.57美元

在EOS上会产生多大的成本?

每当我们想到谈论一个新的智能合约平台时,我们都需要总是问“Cryptokitties问题。”当以太坊推出Cryptokitties时,它会严重阻塞网络,以至于几个ICO被迫推迟他们的众筹销售。实际上,Cryptokitties揭示了以太坊迫切需要立即可扩展性的解决方案。

那么,Cryptokitties会在EOSIO网络上花多少钱呢?在我们继续之前,你需要注意两件事:

  • 持有EOS令牌使你有权获得一定数量的免费交易。
  • 在现实生活中,EOS到目前为止每秒管理约600次交易。

这部由“The Cryptoverse”制作的视频对计算进行了很好的细分。

到目前为止,Cryptokitties在约7个月内销售了约393,000。为了便于计算,让我们将393,000减少到390,000。

因此,Cryptokitties每月可以进行393,000/7= 55,714笔交易,即每年55,714*12=668568笔交易。

现在,EOS目前每秒管理600笔交易,每年交易量达到18,921,600,000笔。请记住,目前有9亿EOS在流通。

因此,截至目前,每个EOS代币每年将为你提供18,921,600,000/900,000,000=21笔交易。

现在,显然这个速度会因为5%的通货膨胀而下降,但是当你认为未来的创新和块生产商增加的额外资源会增加整体网络性能时,我们认为它将绕过通胀效应。

正如我们之前计算的,Cryptokitties每年进行668,568笔交易。因此,为了进行这么多交易,Cryptokitties开发人员需要668568/21=31,837个EOS代币。

目前估值约为318,370美元。

这就像一个像Cryptokitties这样的Dapp将在EOS上花费多少。

每个EOS持有人都需要RAM吗?

所以,这引出了一个问题,谁应该买RAM?

很明显,EOS上的所有开发人员都需要购买RAM来运行他们的Dapps。但是,如果你不是Dapp开发人员怎么办?你还需要购买这些资源吗?

当然不是。完全取决于你想用他们的代币做什么。 Reddit上的许多用户都注意到,即使你不是开发人员,也可以直接使用你的EOS令牌参与各种空投。

你可以用你的代币做另一件有趣的事情。你可以简单地出租你的代币!开发人员总是希望为他们的Dapp获得更多资源。现在,假设像Dapp这样的Cryptokitties在EOS上变得非常受欢迎。作为用户,你可以通过为他们放置一些EOS代币来捐赠给Dapp。如果你不再有兴趣参加,可以在以后收回你的股份。

买卖RAM功能。看看代码。

所以,到目前为止,你已经了解了RAM分配和市场的运作方式。我们将在幕后看一看,看看EOS合约如何与RAM的买卖相结合。EOS代码中的以下方法(功能)处理RAM的购买和销售。(注意:代码取自GitHub

在我们继续之前,让我们澄清一些条款:

  • 付款人:支付代币以获取内存的人。
  • 接收者:销售RAM并接收代币的人。

1. buyram()

1
2
3
4
5
6
7
8
9
void eosiosystem::system_contract::buyram (

account_name payer,

account_name receiver,

asset quant

)

我们要研究的第一种方法是buyram()。

此方法根据RAM的价格和已提供的令牌数量增加付款人的RAM配额。执行此功能时,会发生以下情况:

  • 在购买RAM时,付款人不可逆转地将定量(代币数量)转移到系统合约。
  • 付款人可以通过sellram()方法回收代币(稍后会详细介绍)。
  • 付款人为此操作所需的数据库记录支付存储设施的费用。

RAM是一种稀缺资源,由全局max_ram_size属性定义(稍后将详细介绍)。RAM也受到bancor算法的控制,因此它具有每字节价格,具有100:1的恒定储备比率。

2. buyrambytes()

1
2
3
4
5
6
7
8
9
void eosiosystem::system_contract::buyrambytes (

account_name payer,

account_name receiver,

uint32_t bytes

)

这是一种非常简单的方法。

它将计算付款人将获得的确切RAM数量,并根据当前的市场价格对其进行相应计费。

3. sellram()

1
2
3
4
5
6
7
void eosiosystem::system_contract::sellram (

account_name account,

int64_t bytes

)

此方法减少接收方的RAM配额,然后将所需数量的代币传输到接收方。

4. setram()

1
2
3
4
5
void eosiosystem::system_contract::setram (

uint64_t max_ram_size

)

此方法只是增加或减少可供销售的RAM数量。

你还需要了解一些与RAM相关的有趣代码。由于本文,此代码引起了我们的注意。

EOS最基本的特征之一是空投。基本上,当有人在EOS区块链上创建项目时,他们可以将项目中的本机令牌交给EOS持有者。

现在这又引出了另一个问题。这个操作显然会花费很多RAM,那么在放弃所有这些令牌之后,项目创建者的RAM会发生什么?

显然,一旦人们声称空投本机代币,项目创建者可以通过以下代码声明他们的RAM:

1
2
3
4
5
6
7
8
9
10
11
12
13
if( from.balance.amount == value.amount ) {

from_acnts.erase( from ); // <<< IMPORTANT LINE

} else {

from_acnts.modify( from, owner, [&]( auto& a ) { // <<< IMPORTANT LINE

a.balance -= value;

});

}

由于这段代码,后空投,一旦代币所有者转移代币,它们将自动设置为RAM付款人。发生这一瞬间,项目创建者将恢复他们对RAM的初始投资。这是一些巧妙的编码。

囤积RAM

由于RAM市场的出现,囤积RAM已经成为一个问题。

事实证明,巨头们已经保留了可用64GB中>40GB的RAM。人们为什么会这样做是有道理的。正如我们已经说过的,RAM是一种罕见的资源,市场肯定会导致巨头们囤积RAM。

话虽如此,70%的RAM已被锁定,而没有任何DAPP存在超过300个用户这一事实令人非常担忧。另外,请记住,与网络带宽和CPU带宽不同,人们不能租用RAM。

因此,RAM的价格在一周多一点的时间内从0.14美元大幅上涨至2.44美元。这是一个惊人的1643%的增长!

我们需要等待,看看如何解决这个潜在的问题。

结论

RAM市场是一个有趣的概念,可能会解决Dawn3.0引发的许多问题。我们需要等待并观察未来的情况,以了解市场是否有任何支撑。话虽如此,调整加密经济激励措施并为极为罕见的资源创造流动性,这是一项令人印象深刻的成就。

======================================================================

分享一些比特币、以太坊、EOS等区块链相关的交互式在线编程实战教程:

  • java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
  • php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
  • c#比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在C#代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是C#工程师不可多得的比特币开发学习课程。
  • java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
  • 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • ERC721以太坊通证实战,课程以一个数字艺术品创作与分享DApp的实战开发为主线,深入讲解以太坊非同质化通证的概念、标准与开发方案。内容包含ERC-721标准的自主实现,讲解OpenZeppelin合约代码库二次开发,实战项目采用Truffle,IPFS,实现了通证以及去中心化的通证交易所。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
  • EOS入门教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
  • 深入浅出玩转EOS钱包开发,本课程以手机EOS钱包的完整开发过程为主线,深入学习EOS区块链应用开发,课程内容即涵盖账户、计算资源、智能合约、动作与交易等EOS区块链的核心概念,同时也讲解如何使用eosjs和eosjs-ecc开发包访问EOS区块链,以及如何在React前端应用中集成对EOS区块链的支持。课程内容深入浅出,非常适合前端工程师深入学习EOS区块链应用开发。
  • Hyperledger Fabric 区块链开发详解,本课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、通道配置与启动、链码通信接口等核心概念,也包含Fabric网络设计、nodejs链码与应用开发的操作实践,是Nodejs工程师学习Fabric区块链开发的最佳选择。
  • Hyperledger Fabric java 区块链开发详解,课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、频道配置与启动、链码通信接口等核心概念,也包含Fabric网络设计、java链码与应用开发的操作实践,是java工程师学习Fabric区块链开发的最佳选择。
  • tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。

汇智网原创翻译,转载请标明出处。这里是EOSIO RAM分配背后的机制