一、目标愿景
IaaS(Infrastructure as a Servic,基础设施即服务)为普通用户提供开发便利,实现资源的最大化利用。通过为传统互联网应用开发者提供场外服务器,存储和网络硬件等设施,节省开发成本的同时也降低了应用开发的门槛,促进应用程序的多样化生态构建。其中,最高端IaaS的代表产品是亚马逊的AWS(Elastic Compute Cloud),IBM、VMware和惠普以及其他一些传统IT厂商也提供类似服务,其极强的灵活性和便捷性受到用户广泛青睐。
区块链系统分布式应用(DApp)开发用户亟需一款面向区块链系统的IaaS产品,帮助用户快速上手,构建区块链商业文明。目前,DApp开发普遍面临开发门槛高、完成度低、应用质量差等问题。传统接入以太坊网络并进行开发工作,需要本地部署以太坊节点,数据下载缓慢,同步节点耗时,部署全节点需要数天乃至数周之久。然而,目前以太坊转账等应用必须依托完整的以太坊节点,用户需要能够降低区块链应用开发门槛、简化区块链系统数据访问操作的接口型应用程序,以便帮助区块链应用程序开发人员解决存储空间、开发效率、可扩展性等问题。
Infura是为用户提供对以太坊和IPFS网络的即时、可扩展的 API访问的,确保用户去中心化应用程序随需求的演变而不断扩展的IaaS产品。Infura以先进的可动态扩展的微服务驱动架构为依托,通过提供API服务,为跨行业开发人员、DApp团队和企业提供开发套件,将应用程序连接到以太坊或其他去中心化平台,为全球的去中心化应用程序奠定基础,提供高可用性、可扩展性和高度安全的后端系统。Infura是以太坊网络上的完整节点的集合,使开发人员能够通过符合以太坊客户端标准的API接口连接到节点。
二、解决方案
Infura API套件采用微服务驱动的架构,该架构可动态扩展以支持Infura API。Infura API套件始终拥有最新的网络更新,并在所有网络更改期间保持服务可用性。它通过配置一个新的虚拟服务器,安装以太坊客户端软件并将区块链同步到最新的块数据(也称为“节点配置”),使得节点之间的同步时间更快(小于1小时),并且不需要额外的工具。开发人员可以通过HTTPS和WebSockets连接到以太坊和IPFS,请求响应时间比其他服务和自托管解决方案快20倍。通过使用Infura API套件,开发人员可以拥有更多的时间与用户沟通,并打造定制化产品。
图1 Infura API应用架构图
Infura基础设施中最著名的部分是托管的以太坊客户端网络,它通过客户端兼容的JSON-RPC、HTTPS和WSS支持主网和测试网。Infura还推出IPFS API及其他去中心化网络接口,为实现Web3开发套件奠定基础,有利于构建更多的去中心化存储产品。
Infura使用弹性块存储(EBS)将数据直接写入快照,根据对比快照间差异完成系统处理,保障Infura服务有序运行。如果同步时间超过特定阈值,将被认为时间过长而启动一个新节点,以便快速保持系统运行,如此可以更高效、更具成本效益地通过快照跟踪EBS卷上的增量更改,确保Infura服务不停机。
Infura的流量按请求类型被分为三类:Near-Head、Archive和 Full。其中,Near-Head是用户通过直接访问数据缓存区域获得快速响应的请求类型;Archive是为增强查询速度额外存储历史状态节点数据的请求类型,将节点的历史状态信息“存档”保存下来,大大增加了整体的存储容量;Full是直接访问全节点数据的一种请求类型。Infura的大部分流量是Near-Head类型(70%以上)。为了服务大量的Near-Head请求,Infura使用内容分发网络(CDN)缓存数据(“近端缓存”)。但是伴随流量增长, 平台受到CDN 限制,随后Infura切换到 Redis 存储系统,允许缓存所有近端数据并让支持扩展。
图2 Infura 节点访问请求处理结构
Infura使用各类索引器和缓存方法帮助处理频繁的调用请求。Infura构建Log Indexer解决了传统以太坊客户端使用的布隆过滤器检索面临的响应时间过慢问题;Infura创建 “重组跟踪器”,可以检测新块数据的重组;请求处理方面,Infura通过一组专门的索引器和缓存来处理更频繁调用的请求;Infura开源Key router微服务,使用一致哈希将键映射到一组数据源,这有助于将特定类型的流量路由到特定数据源;Infura还使用节点监控服务,跟踪关键统计数据,并根据需要重新启动节点,使用Vipnode服务创建按各种属性分组的单独内部节点拓扑,有助于控制节点的块传播时间和带宽利用率。
Infura模块化扩展方案使区块链基础网络访问更容易运行和扩展,并根据用户反馈定制开发更多项目,提供更多功能服务。例如,Infura提供全套的交易工具,帮助开发人员创造更好的用户体验;丰富Infura仪表盘,让开发者更好的了解项目情况;支持Web3中MetaMask,Aragon,Gnosis,OpenZeppelin 等众多优秀项目等。目前,Infura已经吸引超过 350,000 名开发人员使用。
三、项目历程
四、思考评论
Infura给区块链相关开发者提供了便利,促进区块链应用开发生态构建,提升区块链应用商业价值。Infura可以让普通开发者在不本地运行庞大的全节点就可以快速接入平台区块链系统,提供负载均衡的API节点集群,并且通过Infura也可以很方便的接入IPFS,这些都大大降低了进入区块链应用程序开发以及Web3世界的门槛,极大丰富了区块链应用,推进了去中心化平台及相关技术的发展。
Infura的垄断化倾向与去中心化思想存在明显冲突,过度依赖Infura的开发将带来中心化问题。Infura阻碍开发人员运行完整的区块链系统节点,也间接影响了用户为区块链系统的分散化做贡献的动力,阻碍了去中心化架构的发展演进。其中,对于Infura的集中化担忧主要来自亚马逊服务器上的托管,Infura已经扩展到更多云服务提供商,以解决纯粹使用亚马逊云托管的问题。同时,为应对Infura的集中化问题,也有其他替代方案如降低全节点存储要求,允许用户本次运行完整的区块链系统或者选择其他开发客户端等,但是目前仍没有其他方案能挑战Infura的地位。相信未来会有更多的替代性方案解决Infura的垄断化、集中化的问题,以促进区块链系统的分散化。
很赞哦! (119)