请选择 进入手机版 | 继续访问电脑版
开启辅助访问
链路首页链路财经目前收录 币种 : 4908 交易所 : 310钱包 : 17 24H 交易量 : $43,403,137,051 总市值 : $245,388,183,835
2019
03/13
15:42
分享
评论
  • 此文译自Filecoin的设计文档https://github.com/filecoin-project/specs

    设计文档,从设计的角度,分别介绍数据结构,挖矿机制,共识机制,支付方式,虚拟机执行,状态机,存储角色等等

    FileCoin是一个分布式存储网络,共享状态持久存在于区块链中。

    签名

    币上有什么签名

    签名是证明特定消息来源的加密函数。在filecoin的上下文中,签名用于发送和接收消息,其中保证每个消息都由特定的个人生成。换句话说,对于另一个人来说,我不可能生成一条似乎是由J生成的签名消息。

    我们使用FileCoin中的签名来验证某人做了什么。例如,我们使用签名来验证表示类似存储交易的操作的交易消息。我们还使用签名来确定生成特定消息的人,确定公钥(可以从签名数据和签名中恢复),以及查找从公钥生成的filecoin地址。

    • 消息(从参与者到区块链)

    • (取证签名-采矿)

    • 块签名(块中所有数据的签名-由块负责人完成)

    签名的影响

    • 消息[未完待续:链接到消息规范]

    • 块验证

    • 以预期共识(EC)通知领导人选举的门票[未完待续:链接到EC规范]

    注意: 参与者之间的消息没有签名,这是因为参与者之间的消息总是由来自用户的消息生成的,而该消息是由该用户签名的。

    Filecoin特定依赖

    • Go-FileCoin中的签名邮件

    依赖关系

    影响我们选择签名的因素

    • 椭圆曲线选择-我们将ECDSA与secp256k1(即比特币椭圆曲线)结合使用。

    • 签名大小限制-我们的签名为64字节+1字节,用于公钥恢复

    CPU可用的平均处理能力(签名聚合)

    特定于硬币的依赖

    • libsecp256k1(即比特币椭圆曲线)

    非依赖项

    • 传输加密

    • 文件编码(porep)

    界面

    FileCoin需要一个满足以下接口的系统才能正常工作。

    注意:Message 这里使用消息作为要签名的对象,但是这个接口也应该适用于其他需要签名的东西。

    选定的签名方案

    目前,filecoin使用secp256k1(即比特币椭圆曲线)签名来实现上述接口。消息、块和票据上的所有签名当前使用相同的方案和格式。

    Filecoin证明

    FileCoin协议需要一种生成和验证以下密码证明的方法:

    • 复制证明:证明已创建给定扇区的唯一副本。seal操作创建此唯一副本并生成相应的复制证明。

    • 时空证明:在特定时间段内,在其专用存储器中存在任意数量的密封扇区,而不是在证明时间动态生成。

    • 工件包含证明:证明给定工件包含在指定的密封扇区内。

    • 可检索性的证明:是一个Merkle证明,一个给定的挑战叶存在于一个现存的密封部分。

    在本文件中,使用了以下定义:

    • 扇区: SECTOR_SIZE 字节的固定大小的数据块。

    • 工件:最多为 SECTOR_SIZE 字节的工件。

    • 原始数据:扇区组成部分、所有块填充和任何终端填充的串联。

    • 未密封扇区:扇区原始数据的具体表示(在磁盘或内存中)

    • 密封扇区:由密封从未密封扇区生成的唯一副本的具体表示(在磁盘或内存中)

    • 块填充:在块之间插入零个或多个“零字节”的块,以确保它们以与块包含证明兼容的方式定位在包含扇区内。

    • 终端填充:在一个扇区的最后一段后插入的零个或多个“零字节”的块,确保原始数据的长度是扇区\字节。

    • 预处理:作为密封的第一阶段应用于未密封扇区的转换,可能会增加数据的大小。

    • 预处理数据:对原始数据进行预处理的结果。

    • 预处理扇区:扇区预处理数据的具体表示(在磁盘或内存中)

    • 陷阱证明:一个字节块,证明创建者拥有对二次算术程序的满意分配。

    • Merkle包含证明:给定叶块包含在Merkle树中的证明(此处未指定其格式),其根是与证明相关联的承诺。

    • 承诺:证明人“承诺”的不透明数据块,支持后续证明,除非承诺本身被有效构建,否则无法有效构建这些证明。例如:一个合适的伪随机抗碰撞散列函数的输出可以作为对该散列的预映像数据的承诺。承诺的公布证明了创造者在承诺产生时拥有该预图像。

    • 证明人:提出证据的一方。

    • 验证人:验证由验证人生成的证明的一方。

    • 扇区计数:执行时空证明的扇区数(后置扇区计数)

    复制证明

    复制证明生成一个扇区原始数据的唯一副本(密封扇区)、一个陷阱证明和一组用于标识密封扇区并将其链接到相应未密封扇区的承诺。

    密封

    Seal的副作用是从未密封的扇区生成一个密封的扇区,并返回识别承诺和陷阱证明。返回的证据是陷阱的证据。

    承诺书用于核实正确的原始数据已被密封,正确的密封数据是后来的时空证明的主题,证明该数据正在被连续存储。

    Seal通过对未密封的扇区执行缓慢的编码操作,这样不诚实的证明者就不可能以足够快的速度计算重新生成密封的扇区,以满足随后所需的时空证明,从而确保密封的扇区仍然显示为原始DA的唯一、具体的表示。

    验证密封

    VerifySeal 是Seal证明组件的功能对应物,需要 Seal's 所有输出,以及Seal的输入,这些输入需要唯一地标识所创建的密封扇区,允许验证者确定给定的证据是否有效。所有的输入都是必需的,因为验证需要足够的上下文来确定一个证明不仅是有效的,而且该证明确实与它声称要证明的内容相符。

    开封

    unseal是seal编码副作用的对应物,将“慢编码”颠倒过来,从一个密封的扇区创建一个未密封的扇区,作为其更一般功能的特殊情况。通常,允许提取一个字节范围(根据原始数据的布局指定)

    安全票据

    确保扇区独特性

    每个密封的扇区都是唯一的,即使未密封的数据是相同的。这可以防止恶意矿工两次存储同一扇区而不占用两倍的存储量,或者两个恶意矿工假装存储同一扇区,但只存储一个副本。扇区的唯一性是通过具有独特的 proverId 和 sectorId 来保证的。每个矿工都有一个独特的证明人,每个扇区在该矿工的扇区中都有一个独特的扇区。综合起来, proverId 和 sectorId 是全球独一无二的。 proverId 和 sectorId 都用于对密封数据进行编码。
    filecoin节点验证验证验证时是否使用了正确的proverid和sectorid。

    时空证明

    :时空证明处于过渡状态。当前的实现是模拟的,最终的设计还没有实现。消费者可以参考下面的内容,但是在规范更新并与规范结构同步之前,不应该执行任何操作。

    GeneratePoSt

    GeneratePoSt 在 POST_SECTORS_COUNT 上生成一个时空证明,计算密封的扇区,由它们的 commR承诺确定。这是通过执行一系列Merkle包含证明(可检索性证明)来完成的。每一个证明都是一个受挑战的部分中的一个受挑战的节点。这些挑战是根据提供的challengeSeed随机生成的。在每个时间步骤中,都会执行一些可检索性的证明。每一组这样的可检索性证明的结果被用来为另一个迭代播种挑战生成。这些可检索性证明的重复和必然的连续生成证明了所声称的密封扇区在生成它们所需的时间内存在。

    由于许多密封的扇区可以同时被证明,因此一个或多个密封的扇区可能已经丢失、损坏,或者无法有效证明。在这种情况下,故障会被记录并返回到一组故障中。这允许证明者有选择地默认单个密封的扇区证明,同时仍然提供其时空证明的聚合证明的可验证证明。

    VerifyPoSt

    VerifyPoSt 是 GeneratePoSt的功能对应项,需要 GeneratePoSt的所有输出,以及识别声明的证据所需的 GeneratePoSt输入。所有的输入都是必需的,因为验证需要足够的上下文来确定一个证明不仅是有效的,而且该证明确实与它声称要证明的内容相符。

    工件包含证明

    PieceInclusionProof 

    PieceInclusionProof  (工件包含证明)第一个和最后一个节点的Merkle包含证明。这样可以确保生成完整Merkle树所需的所有“边缘”散列都可用。

    根据节点的位置,实际上并不需要提供的每个哈希。作为一种空间优化,以编码更复杂为代价,任何路径的“内部”节点都可以省略,前提是实现的包容性允许这种省略。

    GeneratePieceInclusionProofs(生成工件包含证明)

    GeneratePieceInclusionProofs采用Merkle树和一段工件长度,并返回与段相对应的 PieceInclusionProofs的向量。这假设第一个工件从偏移量0开始,并且每个工件直接从上一个工件结束后开始。为了使这种方法有效,需要根据需要填充用于验证工件的工件数据,并且在写入时,工件需要对齐(由于预处理的细节,到128字节块)

    下篇文章我们会介绍Filecoin网络的相关内容,请持续关注我们~

    点击下方图片即可阅读热门文章

    点对点科技是国内领先的,

    分布式存储和计算矿机生产厂商。

    若想了解更多关于IPFS,Lambda,IoTE的资讯,

    在后台回复项目名称即可


主题帖 135 关注 0 粉丝 0
情感指数

链路大数据分析置信度 17.17 %

TA的主题帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表