EOS存储白皮书中文翻译

摘要

EOS.IO存储是一种建议的去中心化的文件系统,旨在为每个人提供永久存储和托管任何网页浏览器可访问的文件的能力。

与其他建议的替代方案不同,除了完全可退还的存款之外,EOS.IO存储上的存储或带宽将不会产生预付费用或固定费用。用户可以在需要存储和带宽的时候持有代币,并且在不需要存储和带宽的时候出售代币。

基于星际间文件系统(IPFS)和EOS.IO软件,EOS.IO存储服务将由区块生产者提供,并且为那些持有基于EOS.IO软件的区块链的令牌的人提供服务。区块生产者被激励去复制和托管那些允许任何人通过Internet浏览器的访问的文件。

背景

IPFS

IPFS是用于存储内容可寻址文件的新兴标准。内容可寻址存储是一种基于其内容而不是其位置来检索的信息的存储机制。换句话说,使用IPFS存储的所有文件的名称都是从其内容的散列中生成。

这意味着同一个文件在每台计算机上都具有相同的名称,并且更改文件内容会导致文件名称的更改。这也意味着当您从服务器下载一个文件夹时,您可以根据服务器提供的内容重新计算文件名称来验证文件是否为您请求的文件。

IPFS还提供P2P网络层,允许计算机根据其唯一的名称发现和共享文件。然而,该P2P网络层不提供或保证存储,托管或带宽。根据目前的结构,IPFS网络希望用户能够提供自己的服务器和相关的基础架构。

EOS.IO

EOS.IO是一款允许任何人创建并启动智能合约的软件平台。智能合约是一段自动执行条款并验证用户操作的计算机代码。区块链通过在有效的用户操作顺序上达成共识来确保安全,然后应用其确定性状态机来获取当前应用状态。

因为区块链的安全性很大程度上取决于它被大量复制并且100%可用,不适合存储大型的可能被修改的文件。例如,假定每个事务为100个字节,一个每秒可以处理100万笔交易的高性能区块链会以超过100MB/s的速度增长。为了保持实用性,这些块链可能定期截断其交易并且记录区块链状态快照。除此以外,区块链分类账簿会被复制每一个节点从而导致不必要的备份开销。在事务日志或区块链状态中存储批量数据是一个既不实用的也不可扩展的分散文件存储解决方案。

为了解决这个问题,一些块链应用程序选择存储IPFS文件名。这个过程确保了智能合同是引用确定和不可破坏的文件,但是不保证这些文件的可用性。IPFS不保证文件的可用性;如果节点拒绝使自己可用,那么文件可能会消失。一个无法访问的文件可能最终会破坏智能合同的效用和目的,因为各参与方无法验证文件的含义。例如,考虑一个通过其IPFS名称引用遗嘱的合同。可能由于忘记支付进行中的文件托管服务或者死者的财产未能安排支付档案托管,导致包含遗嘱的文件不可用,从而引起合约失败。智能合同不能只需存储IPFS文件名,并确信文件将始终存在并在需要时可访问。

区别与联系

Filecoin是一个由IPFS后面的团队创建去中心化的存储网络,用于激励在IPFS上存储文件。根据加密证明的最新发展,此协议创建一个无信任存储证明(proof-of-storage)和备份证明(proof-of-replication)。然后该协议激励个人运行审核员来抽查存储提供者。

当有人想从该网络中存储或者获取一份文件时,存储提供者会收到Filecoin代币。其基本思想是存在大量未使用的存储空间存在在全球的家用电脑和服务器上。Filecoin旨在使拥有未使用存储空间的所有者从中获利,同时减少对第三方对存储提供者的信任需求,反之亦然。

Filecoin采用的模式与其他分散式存储解决方案Maidsafe,Storj和Siacoin类似。他们都试图收集用于存储和数据检索的小额支付,并且他们都创建自己的专用货币。除此之外,所有这些产品的目标都是出租位于低速网络连接下的存储空间的家庭电脑存储提供者。最后,他们都要求用户不断购买加密货币来支付存储和带宽。这意味着这些文件可能不适用于大众通过浏览器免费访问。

这些网络上的存储和带宽成本可能高于使用云服务提供商如Amazon S3的成本。例如,在撰写本文时,Storj收费每GB下载\(0.05,而亚马逊每GB下载\)0.01,Storj收费每月每GB$0.015,而亚马逊每月每GB收取0.0125美元非频繁访问存储。

尚不清楚Filecoin,Maidsafe,Siacoin或Storj的设计是否可以扩展适用于大量用户和大量访问。随着用户和文件的数量的增加,定期付款的数量也将增长。随着基础事务负载的增长,光是维持现状就会不断给基于单线程的区块链造成压力。需要存储文件的用户甚至需要设置自己的服务器以进行自动加密付款或者他们将不得不每月登录手动执行付款。零知识证明和抽查会消耗带宽和CPU资源,其成本可能大于存储的实际成本并管理带宽。

对比

DropBox, Mega, GoogleDrive 与 iCloud 这些服务为用户提供2GB至50GB的免费存储空间和一些带宽服务。这些服务是出售加价付费产品的免费增值服务。不幸的是这些服务既没有公共文件命名系统,如IPFS,也不集成一个开放的P2P网络,也不是去中心化的。每个都完全受到各自的控制单一法律实体,并且停机时间或改变他们的定价模式不是一个罕见的情况。

EOS.IO存储设计

为了本文的目的,我们假设有人部署了基于EOS.IO一个名为TOK的本地代币的区块链。在TOK区块链上部署了一个文件系统智能契约@storage,这个智能契约允许每个用户定义一个目录结构其中所有文件都是指向IPFS文件的链接。

用户通过签署一个事务并且在TOK链上广播来创建到IPFS文件的链接。该事务包括相对于用户的“主目录”的路径,对应的IPFS文件名和文件大小。用户还可以指定它们希望文件由TOK区块生产者存储和托管。

然后,用户将通过由EOS.IO存储软件定义的标准化REST应用程序编程接口(API)将文件上传到其中一个区块生产者。生产者验证文件具有由用户指定的大小和IPFS名称,即制作者会在TOK区块链上广播一个事务,表示该文件已被接收。其他区块生产者将通过IPFS网络复制该文件。

存储配额

总的来说,区块生产者投票表示他们想要的总存储容量。生产者投票的中位数是所有生产者必须提供的预期容量。生产者会被激励去提高存储容量来竞争TOK持有人的投票。在宽限期中,那些提供的存储空间低于平均值的生产者可以增加其可用容量。

为了使用户能够使用存储,他们必须首先通过在@storage智能合合约锁定TOK来预定它- 基本上是一笔完全可退还的押金。用户可以通过解除对区块生产者存储和托管文件的要求来解锁他们的TOK,尽管这些文件仍然可以通过其他IPFS主机可用。假设TOK的价格是恒定的,该持续的存储和带宽成本为0。当某人的文件被存储期间,TOK的市场价值可能会上涨或下降。无论哪种方式,一个人无需为其存储和带宽使用支付任何TOK。

每个TOK令牌可用的存储量是由Bancor算法确定,该算法维持恒定储备比率(CRR)为10。CRR意味着存储容量永远不会被用完,因为对应的开销(每兆字节锁定的TOK)将随着空闲容量的缩小而上升。基于大多数TOK持有人不要求访问他们所有的存储的事实,CRR被设定为10来最小化网络过度配置的成本。

下面的方程将Balance定义为所有各方消耗的储存量的总数。Supply是供应量区块生产者的实际拥有的存储总量,而CCR是恒定的准备金率。

总体上来说,生产者可以调整CRR(向上或向下)或调整总存储量供应(向上或向下),但将存储供应绝不可能低于已经声明的存储空间。

不良数据

EOS.IO软件旨在将智能合约与具有法律约束力的仲裁结合起来。除了有代码之外,这些合约也可以强加主观要求到各个参与方。区块生产者和存储用户签订智能合同协议的同时,也附带签订一个法律合约允许区块生产者负责控制不良数据内容。根据网络提供的仲裁争议解决机制,任何人都可以发起判定任意存储文件是非法的裁定,并且该文件将被删除如果对应的存储和托管违反法律或其他合同。

EOS.IO存储协议将允许块生产者删除任何法律或仲裁要求删除的文件。不是所有的块生产者都要遵守相同的法律法规;因此,由TOK持有者的社区决定区块生产者是否在正确合理地删除文件。有不正当行为的生产者可以在区块链宪法的仲裁之前被投票否决。

重要的是使用IPFS网络从根本上限制了EOS.IO存储器检查数据的能力。如果其他人将文件托管IPFS网络,即使当块生产者不再存储或提供一个特定的文件,该文件可能仍然可用。标识符仍然是文件的准确描述符,任何独立的完整节点也可以使用独立的IPFS节点访问文件。个人可以选择自己托管它或付款给他人来代替他们托管文件。在这种情况下,个人或他们的服务提供商将承担托管和提供文件的责任。

隐私

EOS.IO存储是托管公共数据的平台。需要隐私的用户可以在上传文件之前对其应用加密算法。尽管加密文件的内容将是私人,但是上传文件的区块链帐户的身份仍然可以被所有人看到。

去中心化和复制

EOS.IO存储的核心将是IPFS,它提供了一个去中心化的网络,在这个网络上任何人都可以托管通过其地址识别的文件。区块生产者代表20或更独特和独立的个人或组织,每个人或组织都可以在全球不同的司法管辖区复制和托管数据。这些生产者可以是位于能够支持高吞吐量EOS.IO交易量的数据中心。只要20个块生产者中至少有一个在线并提供文档,该文件对所有人都是可用的。

通过这种方法提供的复制和带宽可用性将显著大于使用较低级别复制的其他分散式解决方案。由于区块生产者需要维持正常运行时间保留他们的投票并获得生产块的报酬,该服务的可靠性也将大大增加。

根据提出的存储智能合同和相应的法律义务,不在总票数前25名的生产者将无法提供EOS.IO存储服务;但是,在被选入前25名后,它们应该表明他们能够快速启用服务的能力。

EOS.IO存储的经济学

天下没有一个免费的午餐,所以是谁实际在支付由区块生产商提供的存储空间和带宽?现有的去中心化解决方案都依赖于每月小额支付,但这是不可持续的,因为它创造了不断增长的基本转账负载,并且很难在不信任具有付款能力的第三方的情况下进行自动化。小额支付创造了不利于大规模采纳的交易阻力。我们通常看到消费者对支付小额贷款的抵制并且偏爱固定费用或一次性付款[1]。

储存经济学

使用EOS.IO存储的所有TOK持有人将通过EOS.IO每年5%的通货膨胀的部分来支付该费用。更具体来说,在已存储文档的用户删除文档之前,由于无法出售TOK,他们面临这种供应通货膨胀。那些需要永久存储的用户将经济有效地消耗他们的TOK。只要新存储请求锁定TOK的速率比TOK通货膨胀率快,那么TOK货币将会有效货币通货紧缩。这将反过来增加向区块生产者支付的TOK的价值使他们能够扩大存储供应。

如果存储需求大幅度减少,解锁的TOK可能进入市场导致有效价格通胀超过自然通胀。换句话说,价格的TOK可能会下降,区块生产商可以维持的存储容量也会下降。幸运的是,由于需求下降,生产者可以简单地减少驱动器数量降低成本也从而降低可用空间。不然,他们也可以降低用于计算锁定的TOK数量的恒定储备比率(CRR)来预留存储容量。

底线是那些需要存储的人通过金钱的时间价值来支付费用。从而取消小额支付,交易阻力,和惊喜费用。

带宽经济学

上传和存储文件的人可能与下载该文件的个人有很大的不同。请假设YouTube的去中心化版本,有人上传了一部家庭电影,然后被数百万人观看。发布视频的人不想或无法支付百万观众带来的带宽消耗。

在这种情况下,每个人为自己的带宽付费是理想的。这又是一个小额支付不是可行的情况,因为它的成本交易(心理和网络)成为有效妨碍大规模采用的收费墙。也就是说,所有用户永远锁定足够的TOK来合理的满足每个人的平均带宽需求,而不用感觉每次观看他们都被收取费用。

除了给所有用户提供TOK带宽外,区块生产者可以提供免费增值服务给所有由TOK持有人通过通货膨胀补贴的互联网用户。每个区块制造商自主决定将向匿名互联网浏览器提供多少免费服务。由TOK持有者决定向哪个区块生产商投票和支付金额。

此外,上传文件的个人可以选择提供那些下载它的带宽费用,例如分发电影预告片的电影制片厂。

结论

通过彻底改变经济模式,EOS.IO存储有潜力从根本上改变去中心化存储市场。消除小额贷款的开销和对成本的新理解将促进应用程序的创新,如从前不可行的去中心化的视频托管。这是史上第一次,一个由分布式加密保护的平台提供托管服务,可以媲美由中心化供应商提供的免费增值服务的托管服务。

作者:抖抖
文章来源:https://mp.weixin.qq.com/s/lphAMp14_951XhBr1uKYqw

关于以太坊钱包区块数据删除的问题

之前写了一篇关于清理以太坊钱包区块数据的文章( http://blog.eosdata.io/index.php/2017/08/ ),收到一封反馈邮件,所以答复一下

Q 您的文章指出整体删除chaindata文件夹,那么删除以后钱包还能正常工作吗?还是会自动重新同步区块数据?同步下来是不是还是那么大的数据量?
A 删除后如果再次打开 Ethereum Wallet,软件会重新同步节点数据。我自己的观察是新版的 Ethereum Wallet 同步下来的数据比以前的老版本小很多,应该也做了优化,不过重新同步的时间非常长,国内网络一般电脑开24小时才能完成。

Q 另外可不可以只删除文件夹中早期的IDB文件呢?删除后影响钱包工作吗?如果可以,多久之前的才是可以删除的呢?
A 不行。完整节点钱包,chaindata是不能删的。

Q 再一个问题wallet钱包和parity钱包哪个更好用呢?parity可以用来创建合约吗?
A 总体来说 Parity 更好用,同步速度快,针对开发合约更友好。不过Parity也有问题,首先就是没有官方钱包安全性高,之前内置Multi-Sign钱包智能合约出过漏洞,另外目前的版本对ERC20代币的操作比较复杂。

EOS系统架构和传统互联网应用架构对比和解析

EOS最近在Steemit上发布了系统的整体架构,虽然讲得不是清晰,但大致轮廓可以猜出来,本文将做一个简单的分析

原文:https://steemit.com/eos/@eosio/introducing-eos-io-application-stack

架构图
eos-arch-en

通过对比传统web服务模块,可以比较容易理解各个模块的用途

EOS:eosd
Web:数据库
提供数据存储,只是eosd是基于状态的区块链数据存储方式,以及通过transaction执行智能合约进行状态的修改。

EOS:Query Services + GraphQL
Web:REST & Graph QL & 微服务
EOS应该会把比如用户账号管理、转账等封装成微服务;GraphQL在React框架里使用已经比较简便。
名词解释:GraphQL 是一个由Facebook提出的 应用层查询语言. 使用 GraphQL, 你可以基于图模式定义你的后端. 然后客户端就可以请求所需要的数据集。

EOS:Client(React.js)
Web:前端
因为EOS架构中将GraphQL默认集成,那么前端使用React.js将是最优的框架选择,所以有意给EOS开发应用的开发者可以关注React多一些了

EOS:IPFS File Storage
Web:文件存储
从架构图上看包含了文件的存储,和服务器端程序的存储;并没有明确是用filecoin的链,还是基于IPFS协议有block producer提供存储;文中说是免费的,所以应该是基于IPFS自建;说是免费的,但同时和代币持有量有关,这点文中还没有讲清楚。

思考:

  1. 类比目前互联网应用的架构模型比较方便开发者上手,同时也提供与目前互联网应用类似的体验
  2. 支付模型目前看不清,但与以太坊按计算量付费的模型相比EOS目前描述的模型非常复杂和动态,因为EOS不止需要限制计算,还要限制带宽、存储等
  3. 最后文中也提到应用开发者可以通过类似的架构来提供链外数据接口,从而实现应用的高可扩展性

如何检查你保存EOS的以太坊钱包被正确的设置了EOS公钥

背景:目前EOS的代币是基于以太坊的ERC20的代币,其在ICO结束后48小时会被冻结,并映射到EOS公链上。所以上一篇文章介绍了如何建立映射的方法,此文讲讲如何确认你的公钥被正确映射了。

打开 MEW 在线钱包:
https://www.myetherwallet.com/#contracts

‘Select Existing Contract’ 中选择 ‘EOS Contribution’

然后选择"Keys"

输入你保存EOS的以太坊地址

点击‘Read’

检查输出的 EOS公钥地址是否正确。

如何生成以及注册eos公钥

ERC: EOS在完成ICO后是会将目前在以太坊网络的ERC20代币转到EOS自己的区块链网络的,所以以下操作的意义就是为了将目前你以太坊钱包里的EOS,映射到将来的EOS网络中做的准备,而且在EOS ICO结束前是必须完成的操作。

原文链接:https://steemit.com/eos/@peterchen145/39yu5j-eos

公钥映射只需要在2018 年 7月3号之前完成就可以了。

大家不要紧张。

第一步:生成eos密钥对(key-pair)

1.访问EOS Token Generator,

看到如下界面

这个页面是由@nadejde基于eos官方源码开发的,他只保留了生产密钥的功能,其他的都去除了。感兴趣的,可以看他的原始文章:https://steemit.com/eos/@nadejde/eos-key-generator,

代码在这:https://github.com/Nadejde/eos-token-sale

官方代码在这:https://github.com/EOSIO/eos-token-distribution

2.点击 Generate EOS key

过一会就会生成你的密钥对:

一定把你的私钥(private key)保存好了,私钥是没办法恢复的,切记切记。

第二步:注册/映射eos密钥

注册eos密钥就是把刚才生成的密钥对建立映射关系,把公钥映射到以太坊地址上。在整个代币分发过程结束后的48小时后,erc20 代币将不能转移,而是根据映射的密钥重新生成eos区块链。

这么说好像挺复杂,简单来说就是这个过程很重要,记住这点就行了。

不过也请放松,2018年7月3号还很遥远,你有大把时间把这事情搞清楚。

注册/映射你的eos密钥对只需要在整个ico完成前进行就可以了。

你只需要注册/映射eos密钥一次就行了,注册多次只是浪费钱,除非你想更新密钥映射。

下面就是注册/映射eos密钥的步骤:

1 访问这个地址https://www.myetherwallet.com/#contracts

2 在Select Existing Contract下拉列表中选择eos contribution

3 点击access

4 这时会在access下出现这些内容:

在select a function下拉框中选择register

5 然后会出现新的内容:

在key 这栏输入你的公钥,注意是公钥。

6 然后解锁你的钱包:

7 点击解锁

8

然后,点击write

9 这时弹出一个提示框

转账数额 设为0,gas limit用默认的就行,如果钱包没有帮你自动生成gas limit,就写:90000;如果交易失败了,就提高gas limit。

10 点击生成交易。

11

点击“是的,我确定!发送交易”

12 如果一切顺利,会在页面底部出现一个绿色条,包含着一链接。

基于EOS.IO 软件的区块链存储成本

原文链接:https://steemit.com/eos/@eosio/storage-costs-on-blockchains-using-eos-io-software?from=singlemessage&isappinstalled=0

ERC:这篇文章对于理解EOS很关键,是目前可用预见的最大成本瓶颈。

在EOS.IO技术白皮书中,我们讨论了一个采用未经修改的软件包的区块链的一些特征。在本文中,我们描述了一种资源分配方法,即如果您拥有1%的代币,那么软件将为您分配该区块链1%的可用存储容量。如果有10亿个代币以及1TB的存储空间,那么每存储1024字节将花费大约1个代币。价值30亿美元的市值相当于每1024字节花费3美元。如果代币达到Ethereum的市值,那么每1024字节可能是30美元,或者说每个字节约3美分。

我们也知道,用EOS.IO软件创建的每一个帐户都大约有1000字节的数据,包括为了追踪权限、账户余额和其他杂项开销。这意味着每个帐户的成本将为30美元,不过仍然太高。

提高节约成本的能力

为了在代币价格比较高的时候降低成本,我们需要增加容量。为了将每个帐户的成本降至0.01美元,我们将需要3000TB的存储空间。如果我们可以使用SSD,这种存储将耗资约100万美元。如果一个基于EOS.IO的区块链达到300亿美元的估值,每年可以分配15亿美元给区块生产者(通货膨胀率为5%),那么这种100万美元的资金是微不足道的。

不幸的是,SSD比RAM大约慢2500倍,并且最近Steem升级到chainbase时,许多Steem见证人发现强制要求操作系统“转换”到SSD可能断然终止进程。这意味着我们需要3000TB的RAM速度级的存储。这并不罕见,Google将其整个数据库保留在RAM中,不同寻常的是一个新的平台需要这么多的RAM。

新的存储技术

英特尔最近开始出货其第一款基于新的3D XPoint技术的Optane SSD。这是第一款可以配置用作RAM的SSD,尽管它比传统RAM稍微慢点,但是比原来的SSD拥有更快的性能。他们将在今年晚些时候发布这些1.5TB容量的驱动。

通过这些新技术,我们认为高性能内存的成本将大幅下降,区块生产者应该能够扩大可用内存以降低成本。代币的市场估值越高,区块生产者将能够支付更多的存储容量。

挑战的真实本质

EOS.IO软件的RAM存储器的代币化使其除了存储价值之外还拥有货币价值。这种附加的货币价值使得相对于没有货币价值的实际存储来说是昂贵的。黄金在工业中并没有被大量使用,是因为它的货币价值超过了其工业价值。使用EOS.IO软件的人创建的代币通过要求当选的区块生产者提供性能证明,有效地地将RAM存储容量货币化。

像一家银行的黄金储备一样,大部分时间它只是存储在那儿从未被使用过。实际上,区块生产者可以宣称“3000TB的存储容量”,但实际上他们只有3TB的容量,1000倍的备份储量。在这种模式下,就像黄金支持票据的存储的费用会如同黄金的价值一样降低,容量存储的成本也会降低。除非突然有人决定购买1%的货币,并尝试存储30TB的数据,而实际可用的只有不到3TB,除此之外将一切正常。

阻止内存银行的运转

只要大多数人从来没有试着去使用他们名下的存储空间,那么一个区块链网络可以以每个代币获得“廉价存储”的方式来操作。随着可用存储量的降低,价格将不得不增加。任何时候,一旦有人想要使用100%的可用存储空间,那么他将不得不支付100%的流动代币;然而,只想使用1%的可用存储空间的人可能只需要支付0.01%的流动代币即可。这个里面使用的准确的方程式需要做一些建模和估计,但是使用第一个存储字节的初始价格比使用所有可用存储的每字节价格便宜1000倍是可能的。

你可以这样理解,一开始你可以启动1000倍的储备率,随后会降至1倍,因为实际的存储百分比被消耗了。所以如果你有1TB真正的RAM,你可以从1000TB的虚拟RAM(1000倍)开始。在消费第一个100GB(10%)之后,您的存储率可能下降到100倍,导致新的虚拟RAM为100TB。当你消耗500GB(50%)的时候,您的储备率将降至20倍,同时拥有的虚拟内存为20TB。随着虚拟RAM下降,每个代币的虚拟RAM也将自动降低从而增加每个附加存储单元的价格。

可变定价的影响

市场自然会消耗资源,直到市场价格不断变化之后导致供需平衡。如果存储的初始定价太便宜,它将迅速被消耗掉,直到价格上涨到只能存储有价值的数据。在这一点上,区块生产者可以增加存储能力或最大储备率来降低价格。代币持有者将投票给价格最实惠的区块生产者,如果代币价格上涨,区块生产者将能够承担额外的能力。

可变定价的另一个因素是在不使用时释放闲置内存的财务激励。随着代币价值增加,使用这些代币来维持存储的机会成本也增加。智能合约开发者们将基于最小化内存使用量及最大化回收利用的原则来设计应用程序。

内存蹲守攻击

这种算法的一个副作用是想要消耗大量内存的人有财务激励机制促使他们成为第一个去消耗内存的人。一旦他们消耗了内存,他们可以在合约中重新规划使用它们。如果他们需要钱,他们可以释放这些内存。第一时间储备内存将快速推高价格,到达投机需求与实际需求的平衡点。

幸运的是,由于保留的内存是“不可传输的”,并且初始的内存成本比购买实际的物理RAM还要贵一百倍左右,所以这个攻击得到了很大的缓和。这个网络使用的每个字节的内存被复制并存储在超过100个完整节点中,并且通常很多都是次节点。网络必须为这些人支付足够的费用来保证购买和维护内存的并行操作。因此,在100个节点上复制的去中心化的RAM每个字节的费用,通常会比中心化的RAM高100倍左右。区块生产者应该注意保持存储率设置,使得当分解所需的冗余级别时,每个字节的成本不会低于这个网络使用的实际存储的成本。

总结

市场自然而然且不可避免地将货币属性加入EOS.IO软件创建的代币中。有必要对消耗额外内存单元的成本进行动态定价,以保持实际价格与真正应用程序开发的价格是对等的。这与新内存技术相结合将确保:在基于EOS.IO软件的区块链上存储数据的成本对于去中心化应用程序开发人员来说是合理的。

EOS经济系统分析[转载]

作者 王巨

前言

在此之前,我分析过EOS和ETH内在的经济逻辑的不同。最近看BM的专访并再次阅读了几遍EOS的白皮书,对EOS的经济系统有了更深刻的理解。

我们知道EOS Token代表的是EOS链上资源的使用权,这些资源包括了带宽和日志存储(磁盘)、计算与计算储备(中央处理器)、状态存储(内存)。再仔细阅读白皮书我们也会知道EOS Token有以下特性:无消耗、可以代理、温和增发(ICO完成后,每年增发不超过5%)。为什么EOS会有这样的设计?其经济激励系统如何能保证系统正常发展下去呢?

免费使用的EOS区块链

EOS没有设计成ETH那样消耗Gas的模式,使用户在使用EOS时可以不用付费,从而免费使用DApp提供的服务。而这仅仅需要锁定部分EOS,注意锁定的EOS不会被消耗,它还是属于EOS的持有者。想明白这些之后,我们可以理解,所有用户只要使用了EOS链上的资源就必须有对等的EOS被锁定才行。

EOS的代理模式

上面的设定又引入了一个新问题,用户使用一个DApp提供的服务就必须持有EOS Token吗?用户会为了使用一个应用而花钱买EOS的Token吗?且不说成本有多高,就是光购买的流程就会让大部分人却步。EOS系统对此是怎么设计的呢?注意看EOS Token的第二个特性,它是可以代理给别人的,就是说如果用户账户没有持有EOS,那么DApp的开发者可以授权给客户使用自己的EOS份额。可以想象,绝大部分Dapp会采用该模式为自己的客户提供服务。回顾一下,DApp的开发者根据自己服务的规模购入适量的EOS,用自己的DApp为用户服务,而用户无需为EOS基础链上的资源付费,用户只需按DApp的服务付费(当然也可以不付费,这要看DApp提供的是付费服务还是免费服务)。这样跟现实的中心化服务模式一致了,用户感知不到自己用的是区块链应用还是中心化的应用。个人猜测这也应该是区块链发展的正确方向。甚至EOS有比中心化服务更优秀的地方,试想一下如果我提供了一个中心化的服务,假设花1w块租用了一个云服务器,结果服务上线之后没人用,没几天就下线了。那你花的租用服务器的钱是不是就算作沉默成本打水漂了,最多折算一下退你部分钱?EOS却不一样,服务停了EOS还是你的,完全没有折旧的风险,甚至有极大可能是增值的。这是不是降低了服务提供商的成本?是不是可以吸引更多的服务提供商加入到EOS的系统中?

增发机制

DApp多了,大家都在抢占EOS链上资源怎么办,有什么激励机制能让EOS链的服务能力跟需求保持一致呢?这其实就是一个供需平衡的机制了。EOS每年增发不超过5%,增发的部分会奖励给区块的生产者。EOS区块产生者的扩容积极性就跟EOS的价格挂钩了。随着链上DApp的增多,DApp的开发者会购买大量的EOS以让自己占有的EOS服务能力的百分比增加已保证自己服务的可用性,这样带来的后果就是推高EOS的价格,而价格的升高反向刺激了区块生产者增加服务能力以赚取EOS(服务能力不行会被投票出局),而服务能力增加了也就能保证了所有DApp的运行,这是一个正向反馈的过程。服务越多EOS价格必然会上涨。可以想象如果链上出现了一款爆款应用量级达到了月活亿级,那EOS会有多贵。

以上都是我本人对EOS的理解,由于知识局限性,上述内容可能完全是错的。

© 著作权归作者所有

EOS.IO的黎明

在EOS.IO的技术白皮书中,我们认为EOS.IO软件是区块链计算的新时代的黎明。这个夏天,EOS.IO的开发团队都在努力工作。现在夏天结束了,EOS.IO的开发进度也比计划的要快。现在已经可以使用分发网络配置了。本文我们将报告EOS.IO的诸多进展情况,请读完本文。

性能证明(proof of performance)

现在EOS.IO软件已经可以使用到分发网络配置中了,所以我们可以对它的性能进行测试。我们的内部测试显示,目前EOS.IO软件在多节点网络中的单线程每秒交易量达到10000笔。这样,在拥有超过100个CPU的机器上就能支持超过100万的tps(transactions per second)性能。

改进设计

我们最新的软件架构做了改进,开发者在上面开发并行应用将会更加容易。开发者们听到这个消息应该会比较开心。

共享数据库访问

我们现在可以允许一个应用去读取另外一个应用的数据库状态,而不需要复杂的异步通信。同时,通过允许每笔交易对它需要读或写的范围进行声明,我们还保留了并行执行的能力。区块生产者们将对交易进行调度,因此网络中不会存在数据冲突。

应用数据的用户本地存储

除了支持跨账户的读操作,应用现在还能把数据保存到其它账户上。这意味着一个现金合约可以把余额保存到每个用户的账户上,而不是保存到现金合约自己的作用域内。从Alice到Bob的交易只需要读/写Alice和Bob的作用域,而不会影响现金合约的作用域。这样就能让很多应用并行地执行,并能让现金转账的处理突破单线程吞吐量的限制。目前就我们所知,还没有其它的区块链支持这样的可拓展的方式来开发并行软件架构。

行内消息传递(inline message passing)

现在,给另一个应用发送消息比任何时候都容易,并且你能确定它一定会被接收和验证。一个应用可以生成任意多的附加信息,添加到当前交易的末尾上去。只要这些生成的消息的读/写作用域相同,并能在分配的时间中执行,那么它们就一定会被分发,否则整个交易将会失效。
这种方式与其它平台使用的同步方式都不一样。同步消息发送有可能产生预料不到的重入性问题。重入性问题已经是无数bug和崩溃的一个来源,因为,对于开发者来说,他们在发起同步调用前,很难确保他们的合约状态是一致的。而使用行内消息传递方式,它把执行操作延迟到当前交易处理器之后进行,开发者就能分发消息,如果分发成功就能进行处理。如果分发失败,整个交易就会失效,而不会产生其它有害到副作用。这意味着你到消息处理器永远不会在一致的状态中调用。

延迟消息传递

有时候你不知道一条消息是否有效,或者,是否有足够的时间,使用当前交易进行行内处理。有时候你需要发送一条能在当前交易作用域之外访问数据的消息。这种情况下,应用可以要求区块生产者对消息进行调度,安排它在下一个周期或未来的一个区块进行分发。如果它是有效的,就会通知你的应用,如果是无效的,它就永远不会被调度,你的应用在超时之后就可以进行清理了。

无限制水平拓展

EOS.IO最新的设计给予了开发者极高的单机性能;能把业务拓展到百万级tps,而不需要复杂的异步架构。
也就是说,EOS.IO软件依然将支持应用组(不需要共享状态)之间的异步消息传递。
异步消息传递(比如普通蔟支持)有很多好处,但是这些好处是有成本的,就是它需要更大的开发复杂度;EOS.IO支持哪些需要数百万tps的业务这么做,但是对于性能要求没这么高的业务,EOS.IO提供了一种流水线的简单方式。

下一代网络拓扑

EOS.IO的设计初衷是,让区块生产者提供高性能去中心化架构作为服务。应用开发者需要很多区块生产者来聚集交易,他们需要API 节点,种子节点,数据库索引,存储以及主机服务。
高性能区块链需要高性能网络架构,这种架构跟目前已有的区块链都不一样。要达到百万级tps,每个节点就需要达到100 MB 每秒每链接。这对于大型数据中心来说是很平常的,但是对于普通家庭用户来说,却是不可想象的。
此外,高性能区块链还包含着各式各样的节点,这些节点运行着区块链的不同子集,并且可能会对交易历史进行修剪。这与以往的区块链系统是一个很大的区别,以往的区块链系统要求所有的节点都是一致的,并且保存着完整的历史记录。
一条传统的区块链由mesh网络中随机链接的节点的动态集合。他们的目标是普通家庭用户,带宽有限,它们透过家庭路由器(NAT),动态地往网络中添加节点。我们认为这种架构不符合高性能区块链架构的需求。
EOS.IO软件一开始就假设所有节点都是互相链接的。节点操作者协同工作,确保网络拓扑是安全的,计划良好的,以及是高效的。这就让区块生产者能互相建立起直接的(且安全的)链接,并且能防止攻击者通过扫描整个网络拓扑,然后寻找节点进行攻击。

区块生产者将托管公共端点,任何人都可以以此连接和订阅他们想要的交易数据的任何子集。这将最大限度地减少非区块生产者运行的完整节点的带宽需求。不想信任单个区块生产者的节点可以订阅多个资源或者等待2/3区块生产者的确认(约45秒)。
这种架构的好处在于,新的节点可以以非常高的速度从区块生产者提供的高带宽基础设施进行连接和同步。此外,这种架构旨在促进有效的单向流,而不是低效的双向协议。
在规模上,区块生产者将运营一个由EOS.IO提供支持的新的互联网主干网。区块生产者将如同使用跨大陆的专用光纤连接的一级互联网供应者一样。生产者将运行耳机用户可以连接的数据中心。第二级主要包括运行全部或部分节点、大型应用的人员。例如,像区块浏览器、网络钱包和加密货币交易这样的服务将会是区块生产者的二级用户。
我们认为这种有意合作网络建设的架构将使区块生产者在加密货币行业中提供独特、有质量的服务。

前方的道路

今年九月,block.one将发布EOS.IO Dawn 1.0版本,它应该足够稳定,足够记录,足以让任何人启动自己的测试网络,以便他们可以构建和部署应用程序。EOS.IO Dawn 1.0版本将是EOS.IO SDK(软件开发工具包)的第一个预发行版本。
那些关注我们EOS.IO进程的人应该很高兴看到我们提前了。(您可以在( https://github.com/EOSIO/Documentation/blob/master/Roadmap.md 查看我们的进程。)第一阶段,最小可行测试环境,包括独立节点、原生合同、虚拟机API、RPC接口、命令行工具(eosc)和基本开发者文档已经完成。我们将作为EOS.IO Dawn 1.0的标签版本。这个阶段预计在2017年夏天完成,实际将于9月22日结束。
我们已经完成了第二阶段——最小可行测试网络的一半。该阶段计划于2017年秋季完成,包括工作网络代码、虚拟机沙盒、资源使用和速率限制、成因导入和区块链间通信。目前我们已经有功能分布式网络和虚拟机沙盒。我们相信能按计划完成第二阶段。

EOS.IO Dawn 2.0的版本,也是下一个主要的预发行版本,将在年底推出。EOS.IO Dawn 2.0将包含1.0中不存在的几个关键功能,包括:
1.资源率限制(防止垃圾邮件/滥用)
2.默克尔树算法(用于跨链通信)
3.升级管理和监管
4.更强大的SDK
5.一般基础设施的改善
6.来自ERC20的代币示例快照
EOS.IO Dawn 2.0版本的目标是足够有效到能启动一个运行中的区块链。还有一件事……

EOS.IO存储

开发人员第一次能够创建和部署一个分布式应用和web界面,而不必担心带宽和存储成本,甚至可以自己托管任何服务器。这开创了新的创新性、去中心化的商业模式,比如去中心化的YouTube、Soundcloud或其他存储密集型项目。
除了计算带宽外,本地EOS.IO的基于软件的区块链代币所有者现在可以通过IPFS / HTTPS访问免费的云存储、托管和下载带宽,这种访问可以在不消耗、不交易代币的情况下进行。
为了实现这一点,区块生产者将在IPFS上为用户托管文件,并允许其他用户下载这些文件。存储资源通过区块链发行支付,并按照持有量对代币持有者进行速率限制。像EOS.IO带宽的模式,存储不会消耗EOS.IO的区块链代币,存储量会随着区块生产者硬件的升级而增加。
EOS.IO软件存储解决方案还可以支持那些没有代币的公共托管,更多细节将在上海和伦敦举办的区块链行业峰会上公布。