EOS 架构简介 - 胖虎晓顿 - 简书

在积累BitShares和Steem三年的实践经验之后,我们深刻认识到做出一个伟大的分布式应用绝不仅仅需要一个快速传输的区块链本身, 它还需要能够为数百万并发用户提供可用体验...

在积累BitSharesSteem三年的实践经验之后,我们深刻认识到做出一个伟大的分布式应用绝不仅仅需要一个快速传输的区块链本身, 它还需要能够为数百万并发用户提供可用体验的基础设施。

在steemit.com的早期,用户期望更够不上传图像到Steemit上,并由Steemit来保存。
使用EOS.IO软件,我们在block.one设想了一个世界,其中区块生产者(block produer)提供给用户基础架构,允许开发人员在构建和部署其应用程序,而无需自己运行任何服务器。 这包括像steemitDTubeBitShares这样复杂的应用程序。

客户端 React.js :

2015年3月React Native 发布,结果一天之内,就在github上获得了 5000 颗星。
React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站。做出来以后,发现这套东西很好用,就在2013年5月开源

react-router\: react.js唯一可选的路由库。它通过管理 URL,实现组件的切换和状态的变化,开发复杂的应用几乎肯定会用到。教程

redux\:React 只是 DOM 的一个抽象层,并不是 Web 应用的完整解决方案。有两个方面,它没涉及:

- 代码结构
- 组件之间的通信

为了解决这个问题,2014年 Facebook 提出了 Flux 架构的概念,引发了很多的实现。2015年,Redux 出现,将 Flux 与函数式编程结合一起,很短时间内就成为了最热门的前端架构。适用场景:多交互、多数据源:

- 用户的使用方式复杂
- 不同身份的用户有不同的使用方式(比如普通用户和管理员)
- 多个用户之间可以协作
- 与服务器大量交互,或者使用了WebSocket
- View要从多个来源获取数据

react-apollo\: 用于连接GraphQL 和 reactJS的一个库
总结:
React不是一个库,也不是一个框架,而是一个庞大的体系。React 不使用 HTML,而使用 JSX 。它打算抛弃 DOM。

存储系统

EOS.IO存储是一种分散的文件系统,旨在为世界各地的互联网用户提供永久存储和托管任何浏览器可访问的法律文件的能力。 与现行方案不同,EOS.IO存储没有存储或带宽费用。 基于IPFS,EOS.IO存储是由块生产者为持有EOS代币的人提供的服务。块生产者将在IPFS网络上复制并托管代币持有者的文件(笔者注: 类似Sia.tech),并提供允许任何具有浏览器的人访问文件的https端点。

笔者思考:EOS的文件会放到IPFS上,如果你删除你的文件,你将赎回你的币,EOS存储空间和代币使用如同当铺和现金。

在同一价格,提供更多储存空间的块链生产者会从令牌持有者那里获得更多的投票,最终所有块链生产者会达成关于单位存储空间和所需代币价格之间的平衡。

数据库查询

除了托管文件外,块生产者能够通过运行API节点帮助代币持有者查询块链数据库状态的。 这些API包括面向图数据库的工具Graph QL的和基于Web组件。 这使得应用程序无需运行和维护自己的可扩展托管服务就可以获得所需的信息。
block.one将设计和发布开源微服务,块生产者可以部署以将块链接数据库状态映射到更传统的数据库中,目的是扩展读访问,可维护性和附加索引。 该软件将促进应用程序开发人员和块生产者构建与传统数据库API进行交互的Web应用程序。

笔者评论: 这次EOS使用的数据查询工具GraphQL和客户端工具React.js都是Facebook

资源限制

应用程序在块链和接口上都占用传输带宽,CPU和存储空间。 块链生产者必须设置访问限制规则,以防用户滥用。 这对于文件下载和API查询是相同的方式来测量块链更新的带宽和CPU时间。 在合同中持有少量原生代币的用户应能够对大多数应用程序具有合理的免费访问级别。

该模型将很好做到带宽平衡,CPU和存储空间给上传或下载的需求。网站付费提供托管的模式,并且增加了将账单和利率限制透明地移动到最终控制消费的用户的灵活性。 这对于像Dtube这样的带宽密集型应用程序至关重要。

自定义的基础架构

block.one认识到使用块生成者提供的通用版本基础架构可以构建的应用程序是有限的。 具体来说,用户需要服务器端提供完全的支持(例如,steemit)或需要由定制微服务维护的自定义数据库索引(例如,市场历史)的应用程序可能需要由应用程序开发人员或其他方托管的定制服务器基础架构。 这些应用程序的开发人员可以从块生产者使用可扩展架构中获益,从而部署自己的定制API和查询服务。 这将有助于开发人员迅速将可扩展应用程序基础架构带入市场

技术爱好者的知识星球会分享最及时的EOS 团队进展以及技术发展

本星球会分享:
     - EOS code 基础知识:
             - C++: boost, CMake,Clang,
             - Linux:OpenSSL,LLVM 4.0,
             - 安全加密: secp256k1-zkp, PGP
             - 前端: WASM,Javascript
     - �筛选并发布Telegram “EOS Developer”优质信息
          -  EOS 单机节点运行
     -  EOS 虚拟多节点运行 (pseudo-distributed)
     -  EOS 多节点运行
     -  EOS智能合约编写与发布
     - 优秀项目架构和设计原理: 
              - graphene(石墨烯),Steemit,BitShares
              - PressOne,BigOne
              - OracleChain
              - Motion.one
              - HMS(Health Mutual Society)