eosioEOS区块链开发指南

科技新闻 2019-09-10157未知admin

  随着区块链网络数据的不断增长,链上历史状态数据的查询读取越发困难。为了解决这一难题,Block.one 一直在开发一系列历史工具,以让 EOSIO 区块链上的访问数据操作更加简单快捷。

  Block.one 之前发布了“状态历史插件”来优化数据访问,“状态历史插件”将区块链状态数据保存为新的平面文件格式,并且暴露一个 websocket 接口来读取区块/状态数据。

  2019 年年初,一些媒体开始报道 EOS.IO 代码提交次数下降的问题,我们 EOS 原力团队曾经公开回应过:EOS.IO 每天都有多个开发者在提交代码,这些开发内容在不同的分支里提交,并且需要经过测试以后再合并到主线 年年初甚至更早就开始进行了开发,直到 2019 年 5 月 15 日 1.8.0-rc2 发布。

  在这个版本中我们看到了大量的提交 , 主要集中在代码重构和线程安全化两个方面 :

  首先的代码重构 , 很多人往往不关心这些既没有增加功能也没有提升性能的代码修改 , 但是从开发的角度看 , 这些其实构成后续开发的重要基础 , 我们可以看到 , 自年初以来 , Block.one 的核心开发者一直在改善 EOS.IO 的代码结构 , 并且从设计层面上逐步在建立一个抽象层 , 最明显的是 EOS.IO.cdt 的完善 , 这些构成了 EOS.IO 的框架 , 不同于很多在一开始就给出了庞大架构的团队 ,Block.one 的开发团队一贯以务实且自低向上的思路开发 EOS.IO。

  另一个方面是关于多线程 , 在最近一段时间有很多关于线程安全性的提交,为下一步实现多线程相关开发做准备,Block.One 团队在 2019 年的开发中对多线程非常重视,此次重构后将很更好的实现 EOS.IO 白皮书里描述的多线程,届时 TPS 会上升到一个新的台阶。

  众所周知 , 中大规模 C++软件的多线程开发一直是一个“深坑”, 为了在引入并行计算的同时保证 EOS.IO 的稳定性 , Block.One 团队并没有急于进行多线程相关新特性的开发 , 而是耐心的排查代码中的线程安全问题 , 完善基础架构支持 , 同时在特定的适合并发的独立模块 , 如 chain api 以及 p2p 模块引入对应的多线 提升链安全性

  在这个版本中 , Block.One 团队修正了之前遗留的一些资源计算问题 , EOS.IO 中资源相关的逻辑很多 , 并且极为分散 , 为了提升链性能并避免节点进行不必要的计算 , EOS.IO 中添加了很多资源相关的特化逻辑 , 这也造成了很多特定场景下用户资源计算的不明确 , 对于 EOS.IO 链来说 , 这带来了很多起潜在的安全性问题 , 前一阶段暴露的由延迟交易所触发的阻塞交易问题 , 很大程度上就是资源检查不完备的问题。

  另外 , 某些场景下资源计算的问题也会导致用户权益上的损失 , 所以这方面的修改势在必行。

  举例来说 , 对于 DAPP 开发者来说 , 一个好消息就是千呼万唤的 `GET_SENDER` API 终于要引入 EOS.IO 中了 , DAPP 开发者可以通过这个 API 判定当前 Action 是否是通过 inline action 机制触发的 , 据此可以回避大量的基于合约触发 inline action 的攻击手段 . 这个更新,可以一定程度上部分解决了困扰社区已久的随机数问题,需要注意的是 , 即使通过这个 api 可以屏蔽当前的很多攻击手段 , 固然攻击者的攻击成本会大幅提高 , 但是不意味着 DAPP 开发者可以高枕无忧 , 对于开发者来说安全问题永远需要注意 , 没有什么一劳永逸的银弹。

  近一段时间 , Block.One 其实开发了非常多的新功能,包括上面提到的几个功能 , 但都没有在过往的更新中出现,一个很大的原因就是开发者必须保证 EOS.IO 的兼容性 , 节点可以选择不升级节点版本 , 显然这会极大的阻挠 EOS.IO 的发展 , 这次 1.8.0 的版本与以往的一个最大区别是这个版本不兼容前面的版本 , 也就是所谓的“硬分叉”, 在这个版本之前 EOS.IO 并没有应对硬分叉的机制 , 硬分叉的过程会对用户的使用带来很大影响 , 为了使以后的更新不会像这一次一样造成很大影响 , 这次更新中添加了一系列硬分叉升级机制 , 为的是以后的硬分叉更新可以更加平滑和安全。

  在 EOS 原力过往的更新中 , 原力团队也遇到了同样的问题 , 所以引入了链配置功能 , 通过这个机制向链添加特性的开启区块高度和链维护状态 , 以此解决硬分叉中的过渡问题 , Block.One 的对策与此类似 , 通过引入 protocol feature 来解决这个问题 , 与原力强调简单通用的解决方案不同 , Block.One 的 feature 设计希望更加完备的解决特性的兼容问题 , 具体的设计可以参见 #6831。

  这里可以判断 Block.One 以后的开发过程中会有比之以往更多的硬分叉 , 未来 EOS.IO 的进展会明显快于以往 .

  大部分节点应该没有经历过硬分叉升级 , 如果严格按照硬分叉的要求来,所有节点需要重放一遍区块,按现在的节点配置,大多数节点最少需要数天才能完成区块重放,当然,还有一种比较偷懒的方法,就是直接使用其他机构提供的快照,但是这样的坏处是如果太多核心节点尤其是 BP 如果这样更新 , 则会影响整个链的安全性。

  在互联网时代,产品迭代是家常便饭,几乎每周开发者都会发布新的版本,用户也习惯第一时间更新升级享受更多的功能和服务。

  而此前硬分叉升级在区块链行业几乎非常少见,原因是大部分区块链由去中心化的自由开发者组成,因此开发进度缓慢,节点极其分散,导致硬分叉升级更加麻烦,以比特币为例,2010 年的溢出漏洞导致了导致了 1840 亿的 BTC 凭空创建出来,中本聪第一时间发布了新的版本硬分叉升级,避免了比特币的危机,后来中本聪离开社区后,比特币由社区接管,硬分叉升级很难达成共识,因此很少使用硬分叉升级的方式。

  而 Block.One 团队是一个专业开发组织,开发进度比以往的区块链项目得到了指数级的提升,因此快速迭代适应用户需求成为了主流。以目前大多数公有链的技术架构来看,如果要实现大规模的功能升级,硬分叉升级的方式不可避免。

  Blockone 做了一定的防范措施:尽管 Block.One 在 2019 年上半年进行了大量的开发,有很多的新功能,但是此次更新只包括一些必要的功能和安全性问题修复 , 等到 feature 上线后硬分叉会变得更加顺利。

  首先 , 准备越多则更新越顺利 , 在更新之前 , 节点必须做好备份工作 , 当前 EOS.IO 节点数据很大 , 节点备份时也一定要考虑恢复备份数据时的效率 , 备份数据与节点一定要在同一内网中 , 不要依赖于他人的备份 , 否则出现问题时传输备份数据的时间会很漫长 , 最好的方式是直接建立节点的备份节点。

  其次 , 需要注意控制节点的交互 , 在更新的过程中 , 整个 EOS.IO 网络会处于一个节点半兼容状态 , 此时如果有人提交触发不兼容逻辑的交易到已经更新过的 BP, 则会导致未更新的 BP 立即分叉 , 虽然这次硬分叉的功能本身就是基于 feature 来管理是否生效的 , 同时执行逻辑出错的交易一般不会在 p2p 网络中传递 , 但是很难排出完全不会出现整个网络分裂的可能性 , 所以在更新过程中节点尤其是超级节点要注意控制交互 , 首先是要控制 http api 的开放 , 可以适当的开启几个 rpc 节点 , 但 rpc 节点与出块几点间不能有直接的 p2p 链接 , 同时重要的节点与其他外部节点间也不要有直接的 p2p 链接 , 这样可以在出现硬分叉时保证关键节点运行。

  最后 , 需要控制好更新次序 , 如果基于一个有序的更新次序 , 即使有硬分叉可能 , 多数节点也不会受到影响 , EOS.IO 中的节点往往分为数据节点、出块节点、RPC 节点和同步节点 , 通过控制节点的交互可以很容易的为出块节点门建立一个“绿区”, 屏蔽外部对核心的出块节点的影响 , 此时出块节点可以进行升级 , 在此之后 , 逐步更新出块节点与外部的同步节点 , 同时应该为社区中的数据节点和其他只读节点预留一个更新窗口期 , 社区和开发者的节点可以一次类推 , 先通过建立屏蔽的同步节点建立一个安全区 , 再更新内部节点 , 最后更新同步节点 , 最终当大部分节点以及全部的核心节点更新完毕之后 , 再更新 RPC 节点 , 进而完成整个网络的更新。

  其实以上谈到的手段和部署规范早已是老生常谈 , 只不过很多节点的维护者并没有严格的按照规范规划节点的部署 , 可以预见 , 如果节点的维护者还不完善节点部署 , 那么在这次更新中将会是很多问题的一个集中爆发点。

  总之 , 越多准备则越加顺利 , 很多问题无法预测 , 所以节点在正式更新之前应当进行一次或者多次演练 , 这样会让 EOS.IO 的这次升级更加稳定。

  从技术角度来讲:硬分叉会导致新的规则不兼容以前的规则,如果获得社区所有人的支持,那么大概率不会有什么影响。

  从社区角度来讲:硬分叉时如果出现不同的共识和技术路线,那么大概率社区会分叉成两个公有链,各自支持不同的路线 年,以太坊(ETH)出现了 DAO 危机,创始人 Vitalik 决定回滚交易,社区有一部分人不同意回滚交易,认为区块链账本不可篡改,拒绝回滚,因此诞生 ETC (以太坊经典)。

  2017 年,比特币(BTC)的拥堵使得大区块的支持者迫不及待要改进比特币,但是社区里有不同意见,因此诞生了比特币现金(BCH)。

  2018 年,EOS 主网启动时,EOS 原力团队提出了不同的治理路线,随后诞生了 EOS 原力(EOSC)。我们可以看到,Block.one 团队做了大量的准备。

  本次硬分叉是 EOS.IO 诞生以来最重要的版本,所有基于 EOS.IO 开发的公有链如 EOS,EOSC,ENU,Telos, BOS,Worbli 等均需要采用硬分叉升级。

  以往的区块链都非常害怕硬分叉,只有 BCH 社区维持着半年一次的硬分叉升级, EOS 原力也进行过多次硬分叉升级,随着节点和社区认知的发展,硬分叉将不再是一个令人恐慌的词汇,反而会成为区块链进步的方式,即使出现新的分支也是有意义的探索。

  此次硬分叉升级将会给 EOS.IO 带来更多的功能和易用性,可以预计,如果想要使得公有链适应时代的发展,未来硬分叉的升级方式将会成为主流。

  近期又有传言称 BM 开发了新的项目,引发了 EOS.IO 社区的恐慌。

  从 EOS.IO 的角度来讲,主网启动后 Block.One 在 EOS.IO 上付出了极大的努力,持续高效的开发将 EOS.IO 打造成了最强大的去中心化应用软件平台。同时,社区也有 EOS 原力,EOS Canada BOS Core 这样一直在公链开发一线深耕的团队,即使 BM 离开社区也不会影响 EOS.IO 的发展。

  EOS 原力团队追踪着世界上大部分主流公有链的实际开发进展,无论是开发速度还是代码质量,BlockOne 在 EOS.IO 开发上的表现远超其他主流公有链开发团队,和 1.8.0-rc2 一样重要的分支还有多个都在开发中,让我们拭目以待。

  EOS Studio Web 的使命是建立一个简单的、完整的、功能强大的在线合约开发和分享平台,为从新手开发者到大型开发团队提供基础设施和技术服务。这个平台由三个部分组成,它们将共同作用,创造一个更加便捷地合约开发资源网络:

  我们移植了桌面版所具有的全部核心功能,降低了配置和部署本地环境的门槛,即使是新手小白也能轻松地在线开始学习区块链开发。

  在线代码编辑器:支持语法高亮,自动补全,代码错误提醒等常用功能;

  约编译器:为方便您运行早期版本的智能合约,我们支持随时切换 v1.3 v1.6 版本的 EOSIO.CDT;

  云端的 EOSIO 节点托管服务:无需搭建本地开发环境,省去大量初始化时间和硬盘存储空间(感谢 dfuse 团队提供服务);

  在开发不同阶段随时切换不同网络:随时切换使用 EOS Studio 专属云托管网络,Jungle / Kylin 测试网,和 EOSIO 主网;

  合约调试器和账户查看器:提供和 EOS Studio 桌面版同样强大的合约调试及账户查看功能;

  交易签名工具:支持使用 Scatter 和其他移动端钱包进行交易签名。

  今天 BlockOne 发布了 Voice 平台 (,区块链应用一个很大的机会就是所有数据都是链上的,所以除了官方的应用,有大量二次开发的机会。

  Voice 从经济模型逻辑上和 Steem 比较类似,毕竟都是 BM 的产物。

  本文就从 Steem 平台的一些二次开发应用看看 Voice 会有哪些相应的机会。

  这个网站输入用户名即可找到你的贵人,就是通过持续点赞给你带来收入的那些用户

  通用验证器库(UAL)允许应用程序开发人员与各种验证器(钱包、应用程序探索器、密钥管理器等)集成。通过编码到一个单一的,通用的API。它还为开发人员提供了一个可选但保留己见的UI层,以便应用程序用户能够获得一致的外观,并感觉独立于他们正在使用的验证器或他们所在的站点。

  一旦集成,应用程序能够为他们的用户提供类似于社交登录或单点登录的体验,只需付出很少的努力。随着越来越多的验证器被开发出来,支持它们就像添加几行代码一样简单。

  首先我们要定义八个术语,保证我们理解它们,它们对 REX 讨论都非常重要。

  成熟期——当你购买 REX 代币时,在四天内将无法把它们换回 EOS。在此期间,这些代币被称为在成熟期。在同一天的不同时间购买的 REX 都从第二天0点开始计时,所以你最多可以有四个不同的到期日。

  4天——如上所述,到期日的计算均从 UTC 时间的第二天00:00开始。因此,如果用户在今天16:00 UTC 购买 REX 代币,那么他们将只能在4天8小时后卖回 EOS(成熟后)。所以每当人们说“四天”时,它实际上是从购买后的 00:00 UTC 计算的四天。

  30天——每次借用的 CPU 或网络带宽的有效期为30天。只有借来这些资源的用户才需要注意这个30天的期限。如果你是借出你的代币资源的用户,你只需要注意四天的成熟期。

  储蓄桶——你可以选择把 REX 代币放到储蓄桶里,放到储蓄桶里的代不会自动进入成熟期的,直到你提出要取出里面的代币,它才会开始四天的成熟期,成熟后才能移动它们。这是为了让你能保证你的代币安全的一个选项。举一个具体的用例,如果你的活跃权限的密钥被盗,有你的密钥的人就能动用你已经成熟了的 REX 代币,换回 EOS 然后盗走。但是如果你的 REX 在储蓄桶里,你就有时间用拥有者权限更改你的活跃权限,然后取消储蓄桶里代币的成熟期。

  REX 基金——要与 REX 交互,你先要在把 EOS 代币存入你的 REX 基金中 ,REX 基金中存的是 EOS 而不是 REX 代币。

  投票前提——想用 REX 出租自己资源,有一个前提,他们必须至少投票给21个BP节点或者代理投票。

  流动性紧缩——这种情况出现的几率很小,但是我们还是应该有所了解。如果在池中没有足够的EOS 代币来满足提款的数量,这种现象就叫“流动性紧缩”。这意味着所有提款订单会被排队,等有新的 EOS 代币进入 REX 池之后,或者有借用的资源到期。用户赎回 EOS 是没有风险的,他们可能最多需要等待30天,但再强调,这个现象是非常罕见的。

  市场价——REX 由 Bancor 支持的,就是说价格不是由用户自己竞价决定的,而是由系统根据池中 EOS 和 REX 代币的比率去计算的。这就是为什么收益率或续约价格是不确定的,因为一切都是在购买时确定的,取决于买卖时间和当时的状况。

  我们还想强调一下两件值得注意的事情。EOS:REX 比值的确定方式决定了你卖出REX收回EOS数量不是高于就是等于你投入的EOS数量。这意味着你永远不会因为持有 REX 而失去任何 EOS,你只会获益。

  另一点是,在获取帐户快照时,空投可以选择是否考虑你的 REX 余额。就是说你在 REX 中的代币会不会被包含在内取决于该空投的开发者。

  我们现在来看一下在与 REX 交互时可调用的所有操作,并作出相关解释。

  2017年,一个叫Block.one的公司开发了一个叫EOSIO的软件。为了开发这个软件,Block.one进行了一个历时350天的众筹,最后募集资金超过40亿美元。

  EOSIO这个软件是后来的EOS-Mainnet和其他区块链网络(BOS、Telos等等)构建网络的基础工具。

  EOS-Mainnet,也就是EOS主网,是我们目前使用最广泛的基于EOSIO软件的区块链网络。网上听说的很多EOS Dapp(Decentralized Application,去中心化的app)都是运行在EOS主网上,大多数人一说EOS,基本上指的就是EOS主网。

  EOS是EOS主网上的原生代币的符号,EOS的数量体现了你在EOS主网上可使用资源和可参与治理的多少。EOS本身具有价格,可以在各大交易所购买。

  我们拥有的EOS是存储在云端的,储存在哪里呢?(一般来说)储存在对应的账户上。在EOS上,账户类似于用户名,所有的操作都是以账户为基础的,转账、投票、更新信息,参与Dapp等等。账户需要注册,至多12位字符。

  如何证明这个账户是属于你的而不是别人的呢?这个就需要用到公钥和私钥,用互联网来类比的话就是密码,不过这个密码是由公钥和私钥两部分构成的。

  形象地理解,公钥和私钥就相当于锁和钥匙,私钥,也就是钥匙,掌握在你自己手里;公钥,也就是锁,和账户绑定。如果你想在账户里进行操作,就需要用你手里的私钥和公钥匹配,如果匹配上了,那么账户就认为你是所有者。

  实际上,EOS的账户系统还可以更加复杂,比如给予每个公钥/私钥对不同的权限(Owner和Active),对一个账户就行多人共管(Multi-sig,多签)等等,暂时先不展开了。

  我觉得,钱包完全是被错误翻译导致理解出现歧义的一个东西。前面说过,我们拥有的EOS是储存在云端的账号里面的,因此它的相关数据并不物理地存储在本地的硬件上(手机、电脑),而是存在EOS网络上。

  就如同我们可以通过浏览器方便、快捷地浏览互联网的内容一样,我们也可以通过钱包方便、快捷地接入EOS主网,将私钥与账户匹配,进行相关的操作。钱包本质是一个带有电子签名功能的浏览器。

  所以,只要记住私钥,你可以借助任何形式的钱包登录到EOS主网上。钱包出现的任何问题,不会影响你对账户的所有权,也不会影响你的资产。

  很多钱包会推出助记词,还会提示你设置一个密码,这些只是钱包帮助你提高安全性的一种手段。只要记住私钥,钱包的密码忘记了没有任何关系,删掉重新导入一次私钥就可以。

  常用的钱包,PC端和国外主要用Scatter[2],手机端和国内主要用TokenPocket[3]、Meetone[4]。这些可以通过他们的官网下载。

  每个EOS账户里面存在着三者资源,所有的操作都需要花费这三种资源,可以理解,这三种资源是你使用EOS网络的成本。这三种资源叫做计算(CPU)、存储(RAM)和网络(NET)。

  如何理解?把EOS看做一个云计算服务平台,这三种资源就比较容易理解了。

  云计算是一种模型,它可以实现随时随地、便捷地、随需应变地从可配置计算资源共享池中获取所需的资源(例如网络、服务器、存储、应用及服务),资源能够快速供应并释放,使管理资源的工作量和与服务提供商的交互减小到最低限度。

  说白话,就是“让计算、存储、网络、数据、算法、应用等软硬件资源像电一样,随时随地、即插即用。”[5]

  根据中国信通院的定义[6],公有云是区别于私有云和混合云的一种部署云计算服务的模式。

  公有云是指基础设施由某一组织所拥有,面向公众或某一行业提供云计算服务的部署模式。

  IaaS:基础设施即服务(Infrastructure-as-a-Service),是将硬件资源进行虚拟化,将计算基础设施(CPU/内存和存储/操作系统)等以出租的方式提供给企业的服务模式。

  PaaS:平台即服务(Platform-as-a-Service),是由云计算服务提供商搭建云计算资源服务平台,并将平台能力以开发、运行环境的方式提供给企业进行程序的编码、开发、部署和管理的服务模式。

  SaaS:软件即服务(Software-as-a-Service),云计算服务提供商通过互联网向企业提供软件应用能力,并按订购的服务量和时长向企业收取费用的服务模式。

  对照上述定义,我认为EOS就是一个代币化的分布式PaaS公有云平台。

  EOS类似于一个运行在分布式服务器(21个节点)上的一个PaaS类公有云服务,而在这个公有云中,存在一种通证(Token)——EOS,能够对整个PaaS的资源(治理权和资源权,注意不仅仅是资源权)进行有效的配置。

  换句话说,EOS类似一个代币化的Google App Engine(而不是代币化的AWS)[7]。在这个平台上,EOS提供了一个软件部署平台(runtime),Dapp的开发者只需要关注自己的业务逻辑,不需要关注底层[8]。

  EOS的账户体系内的资源也是模拟了IaaS底层的资源。IaaS提供的一般是通用计算、存储和网络三大基础资源,对应到EOS的账户体系,EOS账户内也包括了计算(CPU)、存储(RAM)和网络(NET)三大资源,但是具体含义又略有不同[9]。

  中央处理单元,指的是负责在计算机中执行指令和处理信息的硬件;

  一种按时间计价的资源(单位:微秒),用来衡量EOS节点应该对你帐户中的交易确认所投入的时间;

  一种以空间计价的资源(单位:字节),用来衡量当在P2P层上传输数据时需要多少区块的网络描述来存储你的交易数据;

  存储是用来存储云平台上的所有数据。RAM是指运行内存,速度更快,但储存是暂时的,断电后内容就会消失;

  RAM不再是临时存储,而是作为主储存层,用来储存所有的数据。相当于是让储存速度更快的内存(RAM)充当了硬盘的功能。在RAM中存储数据库,可以让读取数据的速度更快。

  什么是CPU?每当你向EOS网络提交交易时,BP节点们都必须处理该交易。 CPU是BP节点在处理、验证交易时必须花费的时间,以微秒(μs)为单位[10]。

  CPU的价格?如果整个EOS网上有1000个代币被抵押在CPU上,而我的账户抵押了20个,那么我保证会拥有CPU总容量的2%的使用权。 如果网络没有被大量使用并且没有达到激活限速阈值,我的CPU用量能超过总量的2%,一旦网络繁忙,达到了该阈值,我就最多只能用到我的2%[10]。

  什么时候消耗CPU?当用户调用智能合约时,区块生产者需要根据智能合约地址查找合约代码,然后将代码加载到内存中执行,这个过程需要消耗一定的CPU算力。CPU计算资源的计量方式为,运行智能合约(交易也属于智能合约的一种)所消耗的时间,用户每次调用智能合约都会消耗一点计算资源,如果消耗为0则无法继续执行合约[11]。

  CPU如何恢复?CPU的恢复周期是24小时,而且是线性恢复,某笔交易的CPU占用在24小时内直线. NET

  什么是NET?当用户发送一笔交易信息后,区块生产者需要将这笔交易打包生成区块,然后将区块通过网络同步给其它生产者,这个过程需要消耗一定网络带宽资源[11]。

  NET的价格?系统会根据抵押Token所占全网Token的比例,分配给用户对应的带宽资源。

  NET的计量方式?NET的计量方式为,交易信息在区块中所占的字节数,比如,一条交易信息占用100字节,如果用户进行10笔交易的线KB。带宽资源的计费方式类似手机流量,用户每发送一笔交易信息就消耗一点带宽资源,如果带宽资源消耗为0,则无法继续发送交易信息[11]。

  NET如何恢复?NET的恢复周期也是24小时,也是线. RAM

  对整个世界来说,RAM是一种异变的内存,当你暂时储存之后,它就会消失。它在EOS中有点不同,我们用它做为主储存层。在EOS中,我们把所有东西都放在RAM中,这是为了性能的考虑,如今,Facebook也是在RAM中存储MySQL数据库,因为它的速度更快。RAM 是允许 EOS 每秒处理非常高交易量的主要因素之一:如果这些数据被磁盘存储,那么访问磁盘的时间将限制吞吐量[13]。

  RAM的价格采用Bancor算法(这是另一个需要展开论述的内容了,此处略)计算得出,经过推导,算法精简如下(公式来自:newdex):

  RAM价格 ≈ 当前EOS池子总量 / 当前全网未分配RAM

  简单概括:RAM的价格会根据RAM的供应量来计算,如果RAM的供应量增加(实际供应量),那么,eosioRAM的价格会下跌;如果RAM的供应量减少,则RAM的价格会上升。

  EOS的RAM的本质和硬盘实际差不多。我们现在把硬盘的储存空间比喻成一间仓库的储存空间,把数据比作一件件的货物,仓库要放货物的时候就需要消耗RAM。

  需要消耗RAM:注册账户、第一次投票、转账(第一次转账时的转出方消耗)、购买RAM、

  不需要消耗RAM:更新数据(更新币余额,更换私钥,更新投票状态)

  CPU和NET可以通过抵押EOS获得(可以自己抵押,也可以让别人帮当抵押),如果不想抵押,可以通过租赁获得(具体在系统自带的资源交易所REX里面实现,或者找第三方租赁服务)。只要是抵押,是不会真正消耗EOS的,取消抵押后,EOS又回到账户中。

  RAM则有一些不同,它主要是通过和系统交易买卖(Bancor算法计算的价格)实现的。同时RAM不能租赁,只能自己使用。

  RAM是一种物理资产,在不扩容的前提下,量是固定的,且不会随着时间的增长而增长,具有一定的稀缺性;而NET、CPU资源则是一种虚拟资产,它的量是与时间相关的,时间越长量越大,一个月的NET/CPU的计算量是一天的30倍[15]。

  从物理层面,如上文所说,EOS就是一个代币化的分布式PaaS公有云平台,所有EOS持币人、EOS开发者都共用由21个节点维护的“EOS云”。

  一个代币化的云平台,其代币的意义相当于将整个云资源进行“证券化(Securitization)”或“代币化(Tokenization)”。在这个维度上,EOS持币人相当于拥有了整个“EOS云”的一部分资源运用能力,也就是“资源权”。这种资源权的最直接体现就是资源交易所REX,你可以通过将闲置的CPU和NET资源使用权转让给网络上的其他用户,同时获得一定的经济补偿。

  如果仅仅是一个代币化的云平台(比如AWS或者GAE发币),谈不上治理维度。但是由于EOS独特的机制,在实际运行中,“EOS云”还存在一个治理层:

  正是由于这个“治理层”的存在,使得EOS和其他的云平台产生了本质的区别。如果说其他的云平台只是机械地执行创造者的指令,EOS云平台开始有了“思考”和“自我演化”的可能。某种程度上,EOS云平台实现了“无机物”向“有机物”的转变。

  正如生物的进化一样,能够“自我演化”的云平台,并不一定意味着会在激烈的生存竞争中活下来,这需要保持不断的“自我演化”。

  “治理”的出现意味着云服务不再仅仅是冷冰冰的技术,“内部社会”已经有了雏形。在EOS内部,开始有了经济活动和政治活动。

  EOS持币人需要通过投票选择为整个社区提供云基础运行维护的人员,此外,还要通过投票,确保这些提供云基础运行维护的人员在行为上也能够促进EOS本身的发展。也就是说,EOS持币人为整个社区选择出了21个最能为社区做出贡献的人,让他们承担社区的运营和维护,并给予他们奖励。EOS持币人拥有选择社区核心团队的权利,也就是“选举权”。

  除了EOS在设计之初就赋予EOS币的“资源权”和“治理权”外,随着Dapp的不断发展,EOS还在逐渐形成一个新的功能:EOS-Mainnet上Dapp的“本位币”。

  所有基于EOS开发的Dapp,除了可以自行发币来进行Dapp内部和外部的价值流动外,EOS本身也提供了这样的功能。而且,随着Newdex和Whaleex等交易所推出越来越多基于EOS的交易对,EOS越来越像整个主网上面的“本位币”。

  比特币目前可以看做整个区块链资产的“本位币”,有非常好的交易深度,提供了避险功能。或许有朝一日,随着Dapp的不断发展,EOS也能够提供类似的避险功能。

  二级市场的价格由流通市场的供需决定,这无论在任何时候都是正确的。

  目前总EOS的个数为1,012,328,729.6887个(2018/5/20 11:00数据,来源eosflare),扣除b1账户的100,000,003个,再扣除eosio.saving账户2,993,322.4057个(这部分暂时不进入流通),市场上全部可流通的EOS大概有9.1亿个,每年增发1000万个(10亿的1%进入流通),这就是所有市场上的EOS供给。

  实际真实参与交易的EOS肯定没有这么多,根据eosflare统计,目前流通的EOS大约499,930,669个,也就是不到5亿个。

  如果价格不断上涨,预计会有一些质押盘流出,但是不至于全部流出(毕竟节点还要投票),所以EOS上总供给应该是在5亿到9亿之间浮动,以30元/个计量,目前大约总供给量为150亿人民币左右。

  供给的决定比较容易,难的是对于需求的测算。不妨讨论一下,什么时候市场会需要EOS?

  上文讨论过,持有EOS意味着拥有EOS云的资源使用权、节点投票权和整个网络的“本位币”。因此EOS的需求可以分为两部分:一部分是质押锁仓获得资源使用权和节点投票权,另一部分是承担整个网络的“货币”功能。

  对于需要资源使用权或节点投票权的用户而言,EOS并不用于流通,而是用于兑换相关的权利,理论上来说,这部分的理论均衡点在于,REX年化收益率等于EOS网络增发率。这意味着,获取该权利并不会导致持币人稀释自身在系统中的权重。

  对于节点来说,其均衡点在于REX年化收益+节点收益=EOS网络增发率,REX年化收益率可以略低于EOS网络增发率;

  根据数据,目前30天的REX Earnings为1.48万个[17],倒推REX均衡持有量约为355.2万个。

  目前REX总量约为6551万EOS[17],远高于REX均衡持有量。这意味着除非REX Earnings能够大幅提高,否则目前没有动机鼓励大家质押锁仓更多EOS。

  根据EOSPark,目前全网全天转账金额平均为3000万个EOS左右[18],实际EOS需求应该是小于这个数字的。如果实际流通的价值波动不大,EOS流通数量和EOS价格成反比。

  目前EOS的二级市场交易还是集中在交易所,而大多数交易似乎并没有上链,因此很难观测。目前来看,二级市场投机需求应该占据了整个EOS需求的绝大部分。

  以上是对二级市场供需简单而粗略的分析,由于水平有限,分析的可以说是非常粗糙了。但是,定性的结论还是可以得出来的:在Dapp大规模发展之前,EOS的需求主要是投机。如果按照现在的租赁比率,Dapp的规模估计要达到现在规模的20倍(300多万个均衡REX抵押VS6500万个实际REX抵押),实际需求才会产生能够影响价格的影响。增加EOS的实际用户,发展Dapp依然是EOS目前最重要的工作。

  供需的视角讨论的更多是EOS在资源维度和应用维度上面的需求。而对于治理维度,实际EOS的价格可以看做是EOS这个虚拟“国家”对其他“国家”的“汇率”。

  国际金融学中的汇率决定理论[19],比如国际借贷学说、购买力平价学说、利率平价学说、国际收支学说、资产市场学说等,可以用于分析EOS的“汇率”视角。这个角度还没有比较成熟的想法,因此暂时不过多论述。

  但核心是,由于EOS中涉及了治理、以及制度因素,未来EOS的发展,可能要从更大的社会维度上去和其他现有制度进行对比分析,从根本上分析经济演化的方式,而不仅仅通过经济学的框架分析价格的走势。

  只能说,EOS中短期的价格影响因素主要受投机、用户规模、Dapp的普及有关,其中用户规模和Dapp的普及会对EOS价格产生支撑。长期来看,EOS所搭建的“虚拟社会”在全球的竞争力可能会对EOS价格产生大趋势上的影响。

  五、EOS的发展与未来:Everyone’s Open Society

  区块链的发展影响的不仅仅是经济层面,这也是EOS吸引我的地方。

  在无边界社会当中,所有要素的流动时间越来越快,成本越来越低;

  无边界社会使我们的价值观出现两极化,一方面是达成共识的速度非常快;另外一方面极端和小众的认知、观念也迅速集合,并逐步形成社会中的独特力量。

  EOS通过引入治理机制,将原来的人在“云”外,变成了人在“云”内。eosio正如文章所说,“人类社会不再是一个树状结构,而逐渐变成了一种网状结构。”[20]

  EOS目的在于成为一个去中心化的自治组织(DAO,Decentralized Autonomous Organization[21]),EOS代币表示一种按比例使用EOS网络资源和治理权的权利。EOS网络是由DAO管理的去中心化操作系统。DAO试图创建一种新的公司形式,其中,用户、开发人员和节点根据协议规则而不是按照CEO的指示进行协作。[22]

  事实上,eosioEOS能够提供的不仅仅是一个DAO,甚至其架构能够为去中心化的自治政府(DAG,Decentralized Autonomous Government)[23]和去中心化的自治社会(DAS,Decentralized Autonomous Society)[24]提供借鉴意义。

  最终,希望Block.oneCTO——Daniel Larimer——的理想能够实现:

  My mission in life is to find free market solutions to secure life, liberty, and property for all.(寻找自由市场的解决方案来保障所有人的生命,自由和财产)[25]

  也希望EOS能够在这个未来的社会里承担重要的角色,让EOS成为Everyone’s Open Society[26]!

  EOS Canada 最新发布了 dfuse Events,可以自定义 dfuse Search 的过滤条件的。

  如果你直接从你的合约里的向 dfuseiohooks:event 发送 inline action,你就可以让 dfuse Search 索引某些字段。成功设置后你就可以在 dfuse API 和 eosq 上用 event.自定义字段:值 查到你自定义的交易了。

  比如一个宠物养成的游戏可以通过 dfuse Events 设定筛选宠物的类型,设定好后就可以查,比如

Copyright © 2010-2020 消息源网 版权所有  

联系QQ:1352848661