我是先河系统CTO杨尉,欢迎大加关注的的Github: waynewyang,本文是filecoin技术架构分析系列文章第二章filecoin通用语言理解。
我是先河系统CTO杨尉,欢迎大加关注的的Github: waynewyang,本文是filecoin技术架构分析系列文章第二章filecoin通用语言理解。
笔者认为一位优秀的软件从业人员,必须具备两种必备能力
这两者是相辅相成的,架构设计师所设计之架构不可能超过自己的认知范畴,故架构设计师必须有效高效地拓展自己的技术认知视图,以适应当代软件架构高速发展的现实。而拓展的途径,一方面就是相关理论体系的快速学习跟进;另一方面,就是实战,对有显著价值的优秀软件项目进行架构剖析。有理论、有实战方是王道。理解具体架构的通用语言就是分析他人架构设计思维的一条捷径。
理解具体技术架构的通用语言是分析架构的一条捷径
对业务的理解是非常有必要的,所以在第一章中,笔者铺垫了filecoin的一些基本概念,任何架构的设计不能脱离业务而行,业务驱动开发仍是非常实用的架构模式;filecoin 技术架构从业务来划分,可划分为两个大的范畴。
filecoin核心通用业务组件
组件名称 | 目的 |
---|---|
DSN | 保障数据安全、包括故障容错、数据完整性、数据可恢复等 |
新型存储证明 | 证明矿工按照协议规范存储了客户指定的数据,数据有效性 |
可验证市场 | 对矿工与客户组成的交易市场进行了建模,保证交易的有效性 |
有效工作量证明 | 出块的共识机制,很重要,做到激励兼容 |
下面各节将会对filecoin技术架构中的核心通用语言进行解释。
Proof-of-Storage包含复制证明(PoR)和时空证明(PoSt),其作用主要有两点:
证明矿工做了有效存储
竞争区块打包出块,获取区块奖励
相对于PoW(Proof-of-Work)或者PoC
相对于PoS(Proof-of-Stake)或者PoC
Proof-of-Storage阻止网络攻击
攻击类型 | 说明 | 阻止攻击原理 |
---|---|---|
女巫攻击Sybil attack | 作恶节点创造多个女巫身份,谎称存储了多个副本 | 每个节点的副本都是有签名的,想通过复制证明,就相当于真实做了有效存储 |
外包攻击outsourcing attacks | 作恶节点快速从其他节点获取内容,谎称他们存储了比他们实际存储更多的内容 | 针对外包攻击,从其他节点获取的整个过程,满足不了证明人随机挑战的要求,依然需要重新生成副本(重新seal需要时间),从而阻止外包攻击 |
生成攻击generation attacks | 作恶节点宣称将要存储超过其实际容量的内容但并未存储内容,以此增加出块的概率 | 宣称无用,存储证明一定要确认密封动作并能应对随机挑战才能OK,如果重新密封就来不及证明,每次挑战是有时间要求的 |
zk-SNARK zero knowledge Succinct Non-interactive ARgument of Knowledge zero knowledge:零知识,即在证明的过程中不透露任何内情 succinct:简洁的,主要是指验证过程不涉及大量数据传输以及验证算法简单 non-interactive:无交互。
密封过程是需要时间的,Seal过程串行加密的过程,无法并行操作,seal密封过程是有意设计慢的,主要目的是为了防攻击。
公开的信息
隐含因素理解:
复制证明的题目与答案
power属性 | 说明 |
---|---|
公开 | 1 某一时刻,整个网络存储总量是公开的<br/>2 单个矿工某一时刻,有效存储总量是公开的 |
可公开验证的 | 对于每个存储任务,矿工都需要生成”时空证明“,证明持续提供服务。通过读取区块链,任何人都可以验证矿工的power声明是否是正确的。 |
变化 | 在任意时间点,矿工都可以通过增加新增扇区和扇区补充的抵押来增加新的存储。这样矿工就能变更他们能提供的power。 |
目的:
每一轮选举一个(或多个)矿工,使得赢得选举的概率与每个矿工分配的存储成比例
filecoin预期共识(Expected Consensus,EC)
预期共识通过选举方案产生
选举方案属性 | 说明 |
---|---|
公平 | 每个参与者每次选举只有一次试验,因为签名是确定性的,而且t和rand(t)是固定的。随机值rand(t)在时刻t之前是未知的<br/> |
保密 | 由于有能力的攻击者不拥有Mi用来计算签名的秘钥<br/> |
公开可验证 | 当选Leader i ∈ Lt 可以通过给出t,rand(t),H(i)/2L,来说服一个有效的验证者。鉴于前面的观点(复制证明与时间证明),有能力的攻击者在不拥有获胜秘密秘钥的情况下不能生成证明。 |
允许用户对他们提供的存储服务进行条件编程,会形成一个多样化市场。
用户可以将程序关联到其他系统(如以太坊)的交易上,他们不直接依赖存储的使用。
规格支持跨链交互,以便能将filecoin存储带入其他基于区块链的平台,同时也将其他平台的功能带入filecoin。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!