要开发一个基于EOS区块链的DAPP需要多少内存、CPU或带宽资源?这是很多即将开始EOS项目的开发者关注的一个重要问题。本文将介绍如何估算EOS DAPP的内存/CPU/带宽资源需求以及相应的成本。

在我们开始进入具体的EOS区块链DApp的资源需求估算之前,先了解一下EOS中的资源类型、使用方法以及资源分配模型。如果你希望深入学习EOS DApp的开发,可以参考这个EOS DApp开发教程。

1、EOS中的资源类型

在EOS区块链上,有三种类型的资源供EOS账号利用:

状态存储:RAM,即内存

带宽及日志存储:Bandwidth,即网络带宽

计算:CPU

2、EOS资源的利用方式

在EOS区块链中,内存/RAM用于保存区块链的状态,例如交易委托账本和账户余额等。这些状态通常由应用程序逻辑来访问。

网络带宽计量你在过去3天内的平均带宽消耗。每当你发送一个动作或交易都会暂时占用一些带宽资源。

CPU计量你在过去3天里的对计算资源的平均利用情况,单位为毫秒。每当你发送一个动作或交易,也会暂时消耗一些CPU资源。

3、EOS资源的分配模型

在EOS区块链中,网络带宽和CPU资源是采用抵押方式获取的。分配给你多少带宽和CPU,取决于你抵押的EOS代币在过去3天里EOS区块链系统抵押合约持有的代币总量中占多大的比例。发送交易所消耗的网络带宽资源和CPU资源,会随时间流逝自动再释放给你。

EOS中的RAM资源则需要以市场价格购买,该价格按Bancor算法自动调节。与CPU和网络带宽资源不同,已经占用的内存资源不会自动释放,唯一的释放办法是从你的账户状态存储中删除数据,之后你就可以按市场价格出售这些空闲的内存资源。

4、资源价格计算器

要计算EOS内存资源的价格,需要使用bancor算法。如果你希望学习如何在自己的EOS钱包产品中实现资源的价格计算,可以参考这个EOS钱包开发教程。

首先用EOS的客户端工具cleos命令获取内存市场数据:

$ cleos -u http://nodes.get-scatter.com:80 get table eosio eosio rammarket

{

"supply": "10000000000.0000 RAMCORE",

"base": {

"balance": "35044821247 RAM",

"weight": "0.50000000000000000"

},

"quote": {

"balance": "3158350.8754 EOS",

"weight": "0.50000000000000000"

}

}

基于上面的内存市场数据,可以按如下公式计算内存价格:

内存价格 = Connector Balance / (Smart Token’s Outstanding supply × CW)

= 3158350.8754 EOS / 35044821247 RAM = 0.09 EOS/Kib

其中:

Connector Balance = quote.balance

Smart Token’s Outstanding supply = base.balance

CW = quote.weight

EOS是连接器(connector), RAMCORE是智能代币(smart token)

注意:在Bancor协议白皮书中有个错误,CW不是故意设置为50%,详情参考这里。

网络带宽和CPU资源的价格依赖于出块节点,彼此的价格都不一样。下面以eosnewyorkio这个出块节点为例说明。

还是先用cleos获取基础数据:

$ cleos -u https://api.eosnewyork.io/ get account eosnewyorkio

net bandwidth:

staked: 900.0000 EOS (total stake delegated from account to self)

delegated: 0.0010 EOS (total staked delegated to account from others)

used: 200 bytes

available: 578.4 MiB

limit: 578.4 MiB

cpu bandwidth:

staked: 900.0000 EOS (total stake delegated from account to self)

delegated: 0.0000 EOS (total staked delegated to account from others)

used: 10.91 ms

available: 1.864 min

limit: 1.864 min

计算公式如下:

Net Price = (Net Staked / Net Available) / 3

= 900.0000 / (578.4*1024) / 3 = 0.0005 EOS/KiB/Day

CPU Price = (CPU Staked / CPU Available) / 3

= 900.0000/(1.864*60*1000)/3 = 0.0025 EOS/ms/Day

你可以在这里查看这些资源的实时价格。

5、估算EOS DApp的内存资源需求

首先我们估算内存资源的需求及成本。参考eos节点源码eos/libraries/chain/eosio_contract.cpp:

The amount of code = code_size X setcode_ram_bytes_multiplier

code_size: size of wast file

setcode_ram_bytes_multiplier =10

另外:

overhead_per_row_pper_index = 32 + sizeof(key) + row data for all objects which stored in DB

这样得到总计内存需求:

Ram for Dapp = Amount of code + overhead_per_row_pper_index

6、估算EOS DApp的CPU和带宽资源需求

假设我们要开发一个EOS上的DApp,预计每天有1000个用户访问,每个用户每天进行5个交易。

通常一个交易需要消耗200字节的带宽和1ms的CPU。因此我们可以得到如下的结果:

total_cpu_dapp = 1ms*5*1000 = 5 000 ms/day

total_net_dapp = 0.2*5*1000 = 1000 KiB/day

结合前面的资源价格计算,我们得到如下的DApp资源成本数据:

Total EOS (CPU+NET) = 1000KiB * 0.0005 EOS/KiB/Day + 5 000 ms/Day *0.0025EOS/ms/Day

~ 13 EOS/day

也就是说,为了运营这个DApp,让它可以支持每天5000人次的访问,我们每天需要保证合约账户上有13个EOS的资源抵押可用,这就是我们开发这个EOS DApp所需要的内存、CPU和带宽资源的估算结果。如果你希望用熟悉的PHP来开发EOS DApp,可以下载这个EOS PHP开发包。

eos dapp开发支持php语言开发吗,EOS开发DApp需要多少内存/CPU/带宽?相关推荐

  1. web开发的java语言步骤_java web开发入门一(servlet和jsp)基于eclispe

    servlet 用java语言开发动态资源网站的技术,在doGet方法中拼接显示html,在doPost方法中提交数据.类似于.net的ashx技术. servlet生成的class文件存放在tomc ...

  2. bim的二次开发需要什么语言_CAD二次开发语言简介

    CAD二次开发,有很多不同层次的语言和库可供选择. 首先是VisualLisp和AutoLisp.Lisp是一门历史悠久的函数式编程语言,很多概念和C这种过程式语言不一样,据说他在人工智能等方面有广泛 ...

  3. 网站开发用什么语言好_网站开发教程:企业如何用网站开启在线业务?

    用网站来开启互联网在线业务是很好的方法,对于创业型企业来说,进行自己的企业网站开发制作能够加快实现品牌业务目标.下面这个教程将会教你如何开展在线业务.并利用网站来扩大业务! 1.确定目标市场 创业团队 ...

  4. 开发一个c语言程序要经过,开发c程序的基本步骤

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 开发c语言的七个基本步骤是: 1.定义程序目标.在开始写程序之前,应对希望程序要做什么有一个清晰的想法.考虑程序需要的信息,程序需 ...

  5. web前端开发需要c语言吗,WEB前端开发必须要掌握哪几部分?

    在WEB开发培训中,我们通常要学习:Html+Css以及JavaScript. 一.Html+Css部分 这部分内容通常不是很难.Css中盒子模型.流动.Block.Inline.层叠.样式优先级等这 ...

  6. Python 语言 SAP2000 二次开发 实例

    目 录 Blog Links Remarks Example Blog Links DalNur | 博客总目录 Python语言 SAP2000 二次开发 -- 概述 Python语言 SAP200 ...

  7. GitHub免费支持CI/CD了,开发测试部署高度自动化,支持各种语言,网友:第三方凉凉...

    郭一璞 栗子 发自 凹非寺 量子位 出品 | 公众号 QbitAI GitHub激动地宣布,终于支持CI/CD了. CI\CD,全称:持续集成 (Continuous Integration) ,持续 ...

  8. 二代CMS旅游网站程序国际版开发中(支持英文、法文等),支持拓展语言包

    二代CMS旅游网站程序国际版开发中(支持英文.法文.德文等),支持拓展语言包,理论上可以拓展成任何一种语言,前端和后端都支持在线语言切换,前端还支持支付货币的币种切换,敬请期待! 转载于:https: ...

  9. android tts不支持中文朗读,android开发tts朗读。在虚拟机上可以朗读,但在手机上却不行。显示TTS暂时不支持这种语言的朗读。...

    android开发tts朗读.在虚拟机上可以朗读,但在手机上却不行.显示TTS暂时不支持这种语言的朗读.0 public class Speech extends Activity { TextToS ...

最新文章

  1. Springsecurity之FilterSecurityInterceptor
  2. 使用indent格式化代码
  3. hdu5720_贪心
  4. 心得14--jsp遍历所有数据标签与转义标签
  5. 用python实现打开虚拟机_如何使用python从虚拟机读取文件
  6. C语言逗号表达式 - C语言零基础入门教程
  7. mysql sqlite 分页查询_sqlite分页查询
  8. 在WPF中最大化窗口并将WindowState设置为None的任务栏
  9. Transact-SQL 语法约定
  10. Excel如何实现随机不重复抽取
  11. 29 - Excel 图表与数据分析
  12. Linux操作系统加固
  13. nginx的反向代理proxy_pass指令
  14. 安装算量软件快速选择计算图元
  15. 三种设置session有效时间的方法
  16. intel rst linux 驱动下载,下载:Intel RST存储驱动10.1.2.1004
  17. 如何将excel表中的多行数据合并到一行
  18. 使用模板消息及利用模板消息群发的说明
  19. Error evaluating expression ‘’. Return value () was not iterable.
  20. windows域控制器损坏修复过程

热门文章

  1. HDFS原理深入理解
  2. Grunt插件uglify
  3. Spark-SQL解析
  4. C++——寻找第k大的数
  5. 乡村科技杂志乡村科技杂志社乡村科技编辑部2022年第20期目录
  6. js面试题自测:在对象中,找出所有的d值。字符串大写转换小写。实现一个方法,实现打印4次zhengzhou,每次间隔1s。
  7. .NET专家Richard Grimes的告别书(zz)
  8. virtualbox虚拟机与主机共享文件
  9. 一些大中型通用计算机的运算器既能进行,行政鉴定主要解决的是:A. 问题是否属于医疗事故的问题和赔偿调解问题B. 给双方当事人一个说法...
  10. 如何使用jQuery删除“disabled”属性?