Filecoin矿工信誉架构设计
本文由IPFS原力区收集编译,版权所属原作者
我们都知道在Filecoin网络中作为一名存储矿工,信誉对于我们是非常重要的——信誉越高,爆块几率越大。
那么信誉系统现在怎么样了呢?
Textile blog最近更新了一篇文章,里面透露了正在为Filecoin开发的工具Powergate里包含了信誉模块。下面就是这篇推文↓↓↓
01、目的
我们旨在构建一组模块,称为Powergate,该模块允许任何应用程序(例如固定服务)使用一组可靠的基础技术和API,这将使在Filecoin网络上的构建变得简单。
用于在Powergate上构建的通用体系结构(fil-toolsd)
简而言之,我们的设计目标是:
快速存储和从Filecoin网络检索数据让使用IPFS或传统存储服务的开发人员熟悉它对于使用IPFS将Filecoin与现有IPFS项目连接和集成的开发人员而言,可以无缝地进行使其易于采用,包括最少的设置或教程步骤,开始使用Filecoin
02、对象
固定服务这些服务已经具有用户管理系统,包括配额、付款方式和身份验证。在这里,Powergate可以帮助他们将现有系统快速附加到Filecoin,并运行将用户映射到唯一Filecoin钱包地址的自定义API,然后将这些地址用于交易,检索等。
最终用户应用程序这些项目希望将Filecoin系统透露给一组用户,从而可能有助于钱包的生成和管理,交易监控,交易续订和修复等等。
Filecoin开发者社区这些开发人员和项目可能有基于Filecoin构建的自己的自定义的系统。尽管如此,他们仍可以使用Powergate项目的特定组件(例如,交易模块或维修模块)来扩展其工作,或者潜在地订阅诸如信誉指数之类的数据馈送。
03、问题
Q:用户存储数据时,他们如何设置交易价格?
A:根据运行filtools的系统,有不同的方法来选择存储交易的价格。首先,交互式界面可以无限制地向存储矿工请求出价,并允许用户以交互方式选择适合其需求的交易。其次,用户可以提供设置最高价格界限的配置或一次性参数,然后filtools将根据这些配置选择尝试选择最佳的矿机。
Q:运行filtools的系统能否带上自己的IPFS节点?
A:是。系统依赖于通过HTTP API对IPFS节点的访问。这意味着您可以提供IPFS节点的任何配置,只要您可以授予filtools访问HTTP API的权限即可从网络获取和添加到网络。
04、设计
Powergate(pow)二进制文件包含所有模块。以下是pow二进制文件的设计图:
笔记:
通过Lotus API Powergate和lotus进行通信通过IPFS API Powergate并和pfs进行通信Prometheus 使用标准的prometheus-http端点箭头是概念性的,图中可能没有更多的交互作用内部gRPC API通常,Powergate提供的所有API(包括所有模块)都是使用gRPC系统定义的。API使用协议缓冲区来定义通过API交换的数据类型。内部gRPC API的好处在于,对API进行了类型化,并对所有API及其使用的类型进行了版本化。对于应用程序(包括CLI和最终用户应用程序),可以使用gRPC API来支持更人性化的用户友好界面和API。
05、组件:系统指标
所有模块均设计为报告指标,这些指标使用以下库/子系统进行注册,汇总和显示:
Opencensus用于注册指标。普罗米修斯(Prometheus),用于衡量指标。用于 Prometheus指标的健康信息中心的 Grafana。cAdvisor,用于在Docker中运行的容器指标。一个Grafana仪表盘维持提供易于理解的度量意见,了解服务器的运行状况。此外,可以启用pprof端点以实时分析Golang进程的数据。
06、组件:网络索引
询问索引该组件将有关询问的信息存储在Filecoin网络中。它的主要目标是为矿工提供对存储交易的缓存访问。
对于配置的时间间隔,此组件具有以下工作流程:向Lotus询问所有矿工的清单它QueryAsk每位矿工提供的先进的最新信息存储问保存此信息。注意:这是全扫描算法,因为没有其他可能性。如果有更好的系统,例如pubsub或类似系统,则可以更改。当前,由于矿工很少,因此此方法相当快(考虑到它可以同时进行上限工作)。
该组件可以独立运行,注册指标,并且不会损坏链上的重组。该索引提供了获取当前索引状态的公共方法,以及用于外部信息访问的gRPC和HTTP端点。细粒度的查询可能会增强DX。
发展状况:初始版本已完成
矿工指数矿工索引存储有关矿工的最新信息。信息分为两组:链上和元数据。
链上信息是指链上存储的信息。当前,存储以下信息:
矿工当前功率矿机电流相对功率由于可以与链上跟踪进行所有必要的交互,因此可以轻松添加任何其他链上信息。添加更多信息的成本应该是调用新的API。客户端可以获取索引的当前状态。可以制作用于查询数据的更细粒度的API。
元数据信息是指不存在于链上或可能以与链增长不同的速率更新的信息。当前,存储以下信息:
如果将矿工视为在线,则在线属性为trueUserAgent指报告的Lotus版本正在运行位置信息,包括国家/地区,纬度和经度通过使用链上索引作为矿工发现机制来收集所有这些信息。Powergate正在运行libp2p主机,该主机已配置为连接到Filecoin网络。该主机配置为使用定制DHT协议标签,并与Lotus升压到相同的对等方。通过查询DHT中的矿工地址,使用ping协议确定活动状态以及使用脱机数据库将IP地址映射到位置,可以收集索引中的所有信息。
该组件可以独立运行,注册指标,并且信息不会在链重组中被破坏。该索引提供了获取当前索引状态的公共方法,以及用于外部信息访问的gRPC和http端点。细粒度的查询可能会增强DX。
发展状况:初始版本已完成
大幅削减指数大幅削减指数存储有关矿工大幅削减事件的历史信息。它检查每个新技巧集上的链,以检测Miner Actor中SlashedAt属性的更改。由于此属性可能会在每个新提示集上更改,因此此组件将建立所有已存在值的历史记录。因此,建立每个矿工的高度历史信息。
该组件可以独立运行,注册指标,并且信息在链重组中不会被破坏。
发展状况:初始版本已完成
07、组件:Filecoin模块
信誉模块信誉模块的主要目标是汇总有关矿工的所有已知信息以构建等级。为了计算每个矿工的得分,它会考虑来自不同来源的信息:
询问索引矿工指数大幅削减指数外部来源(尚未实施)每当一个来源报告有更新的信息,排名被重建。当前的实现是对索引信息进行加权平均,得出有意义的分数。例如,拥有较高的相对权力被认为是积极的,矿商被大幅削减的次数被认为是指数级的消极,低于市场中位数的存储要价被认为是积极的,等等。
轻松访问多种信息源可能会激发人们的想象力,以建立更复杂的等级或不同的评分算法。
该模块提供了一种公共方法,可从构建的排名,当前索引状态以及用于外部信息访问的gRPC和HTTP端点中获取前N名矿工。细粒度的查询可能会增强DX。
发展状况:
初始版本已完成提供gRPC APICLI可用开发中的公共提要交易模块该组件的主要目的是为交易提供更丰富的功能。客户端功能包括:
使用指定的配置存储数据观察交易如何从“ 建议链” 到“ 主动链”进行检索数据给定数据和用于存储的配置,该模块将执行存储交易。配置参数包括:
将复制的数据存储在收到的矿工列表中,或者使用信誉模块自动选择它们。将擦除编码数据转换应用于原始数据,并将输出的切片存储在多个矿机中。数据可以通过以下方式指示:
原始字节按原样存储。要获取的IPLD图的CID。在这种情况下,数据将转换为汽车格式,这将成为要存储的目标。注意:
CID提取可能会接受IPLD选择器来部分提取它。由于不可能在Lotus Testnet中创建和检索数据,因此当前的实现部分完成。由于当前的本地Devnet设置是为测试挖掘硬件而设计的,因此最近进行了一些努力来在定制的Lotus Devnet中运行e2e Deals创建和检索。此新工具允许为模块构建高级功能。发展状况:
初始版本已完成可用的gRPC APICLI可用快速API模块快速API提供了用于数据的快速存储和检索API。使用此模块的每个客户端将具有该组件的专用实例,因为不同的客户端可以对其进行不同的配置。
收到的任何操作请求都将带有以下令牌:
检查它是否过期或无效它确定将执行该操作的Fast API实例,从而确定每个存储层的默认配置实例状态包括:
唯一标识实例的ID有关当前存储的数据的信息通过API完成的所有操作的日志Lotus节点中用于存储或检索操作的钱包地址每当执行存储或检索操作时,都会在不同类型的存储的管道中对其进行处理。每层为执行操作提供了不同的数量级:
内存IPFS集群IPFS公共网络Filecoin存储(Store())操作包括:
可以在IPFS网络上检索要存储的数据的CID,或在API调用中直接引导原始数据配置,包括:Filecoin Config:包括要使用的复制配置储藏类型:冷/热存储类型定义为:
热存储:将使用所有存储层来存储数据;这样可以快速检索。附加参数指定存储数据的批处理时间。此持续时间是CID在被推送到Filecoin存储之前处于热层的时间。冷存储:仅使用Filecoin层。关于矿工选择的所有决定将自动完成。执行存储操作后,以后可以引用它来更改其配置(Transition())。
检索(Retrieve())操作由CID完成,并且它将尝试从热层中获取数据(如果有)。如果没有可用的热数据,它将最终从Filecoin网络中获取数据。Filecoin检索完成后,数据将移至较热的层。如果在Hot-layers中可用,则检索操作只能指定尝试获取数据,如果不是这种情况,则尝试失败以免引起成本。
一个针对CID的删除(Remove())操作将删除所有层中的存储。注意:特别是在Filecoin层,还不清楚这是否可能(取消交易,可能是双方都接受)。
信息(Information())将输出实例状态,例如:
与其相应配置一起存储的活动数据实例操作日志钱包地址和余额该模块还具有修复功能,可以监视存储的数据并执行尽力而为的操作,以确保原始存储配置有效。
API调用的典型用户流如下:
从客户端接收到存储API调用检查呼叫的身份验证令牌。如果无效,过期或无效,则取消请求。如果有效,请继续身份验证令牌信息定义要使用的快速API的逻辑实例,从而定义其状态。或者换句话说,它映射到哪个Fast API实例ID将在实例日志中创建要执行的操作执行相应的操作根据上一步的输出,实例日志的条目将更改为ok或error状态发展状况:开发中的初始版本
/End.
本文由IPFS原力区编译,原文链接:
https://blog.textile.io/filecoin-developer-tools-concepts/
【IPFS原力区】
价值观:价值 共建 共享 荣耀
总部位于上海,聚集基于分布式网络&存储的众多技术大咖和爱好者,深耕基于 IPFS 的商业生态建设和社区发展。
【原力开放日】
每周二举办,聚集了众多技术大咖和 IPFS 爱好者,通过持续输出全面、精细、优质的IPFS咨询和技术支持,将生态中的爱好者转化为IPFS支持者和参与者,共建IPFS生态的健康发展。
本文来源: IPFS原力区编译/ 作者:IPFS原力区