不管是开发还是投资或者纯科普扫盲,刚接触到柚子EOS区块链的时候都会先遇到CPU、NET和RAM的概念,他们到底是什么,跟我们平时了解到的计算机中的概念有什么关系?

EOS介绍

EOS是一种区块链架构,全称Enterprise Operation System,即适用于商业分布式应用的操作系统,旨在提供一种去中心化的通用基础设施,以支持开发者在其上部署智能合约、开发dApp(去中心化应用)。

EOSCPUNETRAM有什么关系?

EOS做为一种基础设施,其设计思路是将区块链的P2P传输、智能合约运行、状态存储等通用概念看作是传统操作系统(如windows、linux等)的网络通信、存储等概念,在此基础上设计出一套EOS 代币(后统一称作token)去中心化生态模型。简单的可以说这些概念是一套服务于token生态的资源量化方案。

CPU & NET

基本概念

EOS中的CPU和NET是从计算机词汇中引入的两个概念:CPU代表中央处理单元,是指负责在计算机中执行指令和处理信息的硬件,而NET表示网络带宽。在EOS上,这两个术语的含义略有不同:CPU是一种以时间计价的资源,用来衡量出块节点(BP)为交易所付出的时间(PS:不仅是BP,所有的全节点都需要付出这种资源,只是BP具备代表性)。NET是一种以空间计价的资源,用于衡量交易在P2P层传输过程中消耗的网络份额。

计量和使用

CPU的计量单位为微秒,NET以字节为单位。因为只在交易执行和传输的时候会用到,用完以后就可以释放掉,所以他们是可再生的资源。用户可以通过抵押自己持有的token来获取CPU和NET,可获得的资源量取决于抵押token所占全网token的比例,比如用户持有1%的token,那么他抵押全部token能获得的CPU或NET资源就是全网的1%(需要补充抵押价格计算)。在不需要这些资源后,用户可以再将其换回等额的token,没有任何代币消耗,这也是EOS和以太坊的一大区别:EOS中的资源是按持有token份额免费使用(所有权模式),而以太坊在使用资源的时候是需要消耗token的(租赁模式)。

RAM

基本概念

RAM即我们平时说的内存,在EOS中RAM的含义稍微复杂一点,可以延伸为EOS系统中除了CPU和NET之外的所有资源,对应到传统计算机系统上,大致相当于RAM和数据库两者的集合。

谁需要

RAM对dApp开发者(确切来说应该是运营者)来说是很珍贵的资源,因为随着dApp的运行会产生大量需要存储的程序状态(比如新增的用户账号、余额记录等),通常这些程序状态多数会长期占用节点的存储空间。可以想象一个EOS节点会随着运行在其上的dApp的业务不断增长,积累在节点上的数据会越来越多,其所剩的存储空间也会逐渐减少。因此,与CPU和NET所不同的是,RAM具备比较明显的稀缺性。

计量和使用

RAM的资源获取本质上与CPU和NET一样,也是通过抵押换取,并且在释放后能取回抵押的token。所不同的是,由于RAM的稀缺性,必然会伴随抵押价格波动:可以假设EOS刚一运行的时候RAM抵押价格为 10Byte/1EOS,人们知道RAM的数量有限,会设法抵押换取并囤积尽可能多的RAM然后在高价(比如10Byte/10EOS)时卖给急需RAM的dApp开发者,尽管EOS本身可能并未设计这种倒卖盈利的渠道,投机者也总能找到炒作方法,包括线下交易,账号出售等。为了描述这种价格波动的场景,EOS的设计采用了bancor算法(一种供求市场价格模型,其核心思想就是根据市场供求关系决定价格,买的人越多价格越高)来计算RAM的抵押价格。由此一来,用户将手中的token抵押获得RAM,然后再在某个时刻将其释放的时候,所能取回的token数额可能不再等于当初抵押的数额,可能亏损也可能盈余。需要再次强调的是,这种波动不是由bancor算法引起,而是缘于节点主机有限的物理内存空间。

对RAM的炒作投机会引起token价格上升,进而导致开发者的成本增加,最后不得不将目光转向其他区块链生态。所以EOS中对RAM资源的抵押获取机制除了使用bancor算法,还增加了一些规则:抵押或者解除抵押需要收取0.5%的手续费,并且获得RAM不能出租给其他人,只能给自己使用。

那RAM的价格波动和手续费的存在是否与前文提到的“免费使用”和“所有权模式”相背?一方面,EOS设计初衷的确是根据token的持有比例免费分配RAM资源,价格波动所致的盈亏本质是用户承担了市场炒作风险,而非“费用”,至于手续费,其本质是遏制投机的一个楔子,类似于某些调控税项(“楔子”引自曼昆的《经济学原理》),也并非“使用费”;另一方面,dApp开发者确实承受了日益趋高的价格压力,不管它是什么“费”,都为开发者所诟病,成为EOS发展的一个阻碍。

对此EOS也在积极寻找优化方案,比如可能尝试引进DRAM的概念,分离投机和开发需求。但在笔者看来,根本解决的方向可能还是解决RAM的稀缺性或者考虑使用以太坊的“租赁模式”,显然第一种会受限于存储介质技术发展。另外,部分开发者的望而却步也无疑是泼向炒作市场的一盆冷水。

结语

虽有不完美之处,EOS的很多先进设计仍吸引了包括笔者在内的大量开发者的关注和信奉,区块链在今天仍是探索中的事物,我们有理由拭目以待。

参考文献

1. EOS RAM 101: Non-Technical Guidebook for Beginners

https://medium.com/coinmonks/eos-ram-101-non-technical-guidebook-for-beginners-6f971322042e

2. CPU, NET & RAM — The raw materials of the EOS economy

https://medium.com/@liquideos/cpu-net-ram-the-raw-materials-of-the-eos-economy-c4f85022fae

3. EOS RAM:内存是拿来用的,不是拿来炒的

https://www.jingyublock.com/132.html

4. 什么是staking抵押和-unstaking取消抵押eos

https://www.eoscanada.com/zh/blog/什么是staking抵押和-unstaking取消抵押eos

5. EOS钱包开发:抵押和赎回NET与CPU带宽

https://www.8btc.com/article/309582

6. 为什么我EOS账户会有CPU不够用的情况?

https://www.eoscanada.com/zh/blog/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91eos%E8%B4%A6%E6%88%B7%E4%B8%8A%E7%9A%84cpu%E4%BC%9A%E6%9C%89%E4%B8%8D%E5%A4%9F%E7%94%A8%E7%9A%84%E6%83%85%E5%86%B5

7.https://eosio.stackexchange.com/questions/42/how-is-the-total-available-capacity-ram-cpu-bandwidth-communicated-among-block

EOS中的CPU、NET和RAM是什么?相关推荐

  1. 将flash中的代码复制到RAM中运行的方法

    在MCU的使用过程中,偶尔会遇到将flash中的代码复制到RAM中运行的情况,下面就来说一下具体的方法,以28335的flash初始化为例: 1,编写函数,该函数处于flash中,就是我们即将要复制的 ...

  2. Virtex-6中的BRAM(Block RAM)模块、DSP 模块XtremeDSP

    BRAM(Block RAM)模块 Virtex-6中嵌入BRAM,大大拓展了FPGA的应用范围和应用的灵活性.BRAM可被配置为单端口RAM.双端口RAM.内容地址存储器(CAM)以及FIFO等常用 ...

  3. cpu使用率 htop显示_用top、vmstat、Htop、sar命令在Linux系统中检查CPU使用率/利用率...

    本文介绍使用top.vmstat.Htop.sar命令在Linux操作系统中检查CPU使用率/利用率,其实也可以在图形界面中通过工具查看的,可参考使用Stress Terminal UI在Linux终 ...

  4. Android中关于cpu/cpuset/schedtune的应用

    Android中关于cpu/cpuset/schedtune的应用都是基于进程优先级的,根据不同优先级划分进程类型.AMS(ActivityManagerService)和PMS(PackageMan ...

  5. 02全志r58平台Android4.4.4下关闭内核中的CPU的开启关闭提示

    02全志r58平台Android4.4.4下关闭内核中的CPU的开启关闭提示 2017/8/18 13:53 版本:V1.0 开发板:SC5806(全志R58平台) SDK:android4.4.4 ...

  6. 如何在 .NET Core 中获取 CPU 使用率

    这篇文章我们分享一种如何在 .NETCore 中获取 CPU使用率的方法, 它所报告的这个值和 任务管理器 中报告的 CPU 使用值 差不多是一致的. 在 .NET Framework 中,很多人会用 ...

  7. 聊聊 top 命令中的 CPU 使用率

    之前写过cpu占用率的文章 CPU占用率是什么? ==== 平常我们使用 top 命令来查看系统的性能情况,在 top 命令中可以看到很多不同类型的 CPU 使用率,如下图红框中标出部分: 下面,我们 ...

  8. linux runqueue定义,Linux中多CPU的runqueue及抢占

    一.引出 在在嵌入式操作系统中,很多线程都可以为实时任务,因为毕竟这些线程很少和人接触,而是面向任务的.所有就有一个抢占的时机问题.特别是2.6内核中引入了新的内核态抢占任务,所以就可以说一下这个内核 ...

  9. linux中物理cpu、逻辑cpu以及core、vcore

    linux中物理cpu.逻辑cpu以及core.vcore linux查看物理cpu: cat /proc/cpuinfo | grep 'physical id' | sort | wc -l li ...

最新文章

  1. 微信小程序去掉左上角的返回箭头
  2. CSS2020聚焦新基建 腾讯发布云原生安全体系 助力客户备战云上“主战场”
  3. FZU 2087 统计树边【MST相关】
  4. 手动实现kt(java)同步工作流和异步工作流
  5. Eclipse.自动提示--编写HTML/CSS/JS/JSP代码时自动提示的解决办法
  6. SAP云平台CloudFoundry环境下的环境变量使用
  7. java 图片缓存工具,java缓存读取图片解决方案
  8. Linux环境下rman备份的实例脚本
  9. TypeError: Object of type ‘TrackedArray‘ is not JSON serializable
  10. new 一个结构体数组_C语言结构体到底占多少内存?简单!一文助你解决结构体内存问题...
  11. 七、【应用的主要框架】
  12. iPhone 和 华为手机 :手机端酷狗音乐提示 “导入歌曲不支持此操作” ----曲线解决导入问题
  13. 基于R语言的方差分析
  14. SSIM PSNR db
  15. 多目标优化_学习笔记(三)MOEA/D
  16. 普通话测试-短文60篇文章,附带拼音(1-10篇)
  17. 工作量评估--专家评估法实际操作心得
  18. STM32 USB应用——VCP
  19. CSDN官方力推的《用户社区》,值得你来逛逛
  20. CRX-VF低温探针台安装实验室安装准备条件

热门文章

  1. 扶着墙进去,扶着墙出来
  2. php监听网卡数据,VnStat PHP:用于监控网络带宽使用的基于Web的界面
  3. python配什么数据库_[宜配屋]听图阁
  4. android Menu菜单组键
  5. English语法_关系代词 - 定义与分类
  6. 考研逻辑整理 - 类比推理和归纳推理
  7. TIA PORTAL 西门子博途中怎样设置DB块中的变量数据为保持型或不保持?
  8. 【华为云技术分享】如何将代码自动迁移到鲲鹏平台
  9. Watershed算法
  10. RSA加密的实现(Python2.7(分段加密)+python3)