filecoin技术架构分析二:filecoin通用语言理解

为什么要把 filecoin 通用语言单独列为一讲

笔者认为一位优秀的软件从业人员,必须具备两种必备能力

架构设计能力

架构剖析能力

这两者是相辅相成的,架构设计师所设计之架构不可能超过自己的认知范畴,故架构设计师必须有效高效地拓展自己的技术认知视图,以适应当代软件架构高速发展的现实。而拓展的途径,一方面就是相关理论体系的快速学习跟进;另一方面,就是实战,对有显著价值的优秀软件项目进行架构剖析。有理论、有实战方是王道。理解具体架构的通用语言就是分析他人架构设计思维的一条捷径。

理解具体技术架构的通用语言是分析架构的一条捷径

通用语言是架构设计人员为实现某个具体技术架构,所高度抽象出来的名词或者称谓,通过理解通用语言,可以快速理解架构设计人员的思维和设计目的。

与读书方法类似(薄读-> 厚读 > 再薄读),理解通用语言就是第一次的薄读过程,非常重要。

对业务的理解是非常有必要的,所以在第一章中,笔者铺垫了 filecoin 的一些基本概念,任何架构的设计不能脱离业务而行,业务驱动开发仍是非常实用的架构模式;filecoin 技术架构从业务来划分,可划分为两个大的范畴。

分布式存储解决方案

存储矿工

检索矿工

存储客户端

检索客户端

区块链项目

filecoin 公链

filecoin actors 智能合约

filecoin 核心通用业务组件

组件名称 目的

DSN 保障数据安全、包括故障容错、数据完整性、数据可恢复等

新型存储证明 证明矿工按照协议规范存储了客户指定的数据,数据有效性

可验证市场 对矿工与客户组成的交易市场进行了建模,保证交易的有效性

有效工作量证明 出块的共识机制,很重要,做到激励兼容

下面各节将会对 filecoin 技术架构中的核心通用语言进行解释。

存储证明

Proof-of-Storage 包含复制证明(PoR)和时空证明(PoSt),其作用主要有两点:

证明矿工做了有效存储

竞争区块打包出块,获取区块奖励

1

2

3

2.2.1 为什么使用存储证明

相对于 PoW(Proof-of-Work)或者 PoC

    PoW 耗能严重;PoC 以空间换时间,同样存在耗能严重问题

    而 filecoin 网络的耗能必须远低于类似比特币的 PoW,参见第一讲 filecoin 的对标对象,filecoin 必须实现以更低的成对去应对商业竞争,同时提供相同级别的安全性,以及文件存储的效用

    存储证明需要做要与实体经济挂钩,减少无谓浪费

相对于 PoS(Proof-of-Stake)或者 PoC

    Proof-of-Storage 在定向领域(分布式存储)以更简单方式,协调激励,并驱使矿工以有竞争力的价格提供真实的新存储,它促使矿工积极保证 filecoin 网络的效用

    当然 Proof-of-Stake 是区块链领域的热点研究问题

Proof-of-Storage 阻止网络攻击

1

2

3

4

5

6

7

8

9

10

攻击类型 说明 阻止攻击原理

女巫攻击 Sybil attack 作恶节点创造多个女巫身份,谎称存储了多个副本 每个节点的副本都是有签名的,想通过复制证明,就相当于真实做了有效存储

外包攻击 outsourcing attacks 作恶节点快速从其他节点获取内容,谎称他们存储了比他们实际存储更多的内容 针对外包攻击,从其他节点获取的整个过程,满足不了证明人随机挑战的要求,依然需要重新生成副本(重新 seal 需要时间),从而阻止外包攻击

生成攻击 generation attacks 作恶节点宣称将要存储超过其实际容量的内容但并未存储内容,以此增加出块的概率 宣称无用,存储证明一定要确认密封动作并能应对随机挑战才能 OK,如果重新密封就来不及证明,每次挑战是有时间要求的

复制证明

基础

复制证明本质上可以理解为一种零知识证明,既然是零知识证明,我们在后面需要理解 filecoin 复制证明的题目和答案

zk-SNARK zero knowledge Succinct Non-interactive ARgument of Knowledge

zero knowledge:零知识,即在证明的过程中不透露任何内情

succinct:简洁的,主要是指验证过程不涉及大量数据传输以及验证算法简单

non-interactive:无交互。

生成证明的方法在 filecoin 架构中称之为 seal 密封

密封过程是需要时间的,Seal 过程串行加密的过程,无法并行操作,seal 密封过程是有意设计慢的,主要目的是为了防攻击。

1

2

3

4

5

6

7

8

9

10

filecoin 复制证明的题目和答案

公开的信息

    矿工的节点公钥、密封公钥、存储公钥、原始 Data 哈希、该矿工存储的副本根哈希

隐含因素理解:

    特有节点的副本哈希是由哪些哈希组成(DAG),任意挑战者或者攻击者是不知情的

    挑战随机参数,通过 CRH(防碰撞的哈希散列 Collision-resistant hashing)生成哈希之后传递给证明者,作用是确定特定的叶子节点的哈希,比如让证明者自行计算离 H(c))最近的叶子节点哈希。

复制证明的题目与答案

    挑战参数:副本哈希 rt,挑战随机参数 c -> H(c)

    证明者输入(题目):

        H(c)(每一次挑战都会变)

        隐含信息比喻:该叶子节点是与 H(c)最近的节点

    证明者输出(答案):

        H(c)对应的叶子节点 ——> rt 的路径(攻击者是很难反推的)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

时空证明

时空证明可以理解为矿工持续性地生成复制证明

    挑战者输入一个随机参数 c,后面的随机参数由证明者基于上一个的挑战答案去生成。(不用与挑战者持续交互)

    下图中变量 i 会轮询生成新的时间变量产生随机挑战。

1

2

3

时空证明

预期共识

基础前提

filecoin 基于存储证明(有效存储量)来作为矿工在整个网络中的 power

1

power 属性 说明

公开 1 某一时刻,整个网络存储总量是公开的

2 单个矿工某一时刻,有效存储总量是公开的

可公开验证的 对于每个存储任务,矿工都需要生成”时空证明“,证明持续提供服务。通过读取区块链,任何人都可以验证矿工的 power 声明是否是正确的。

变化 在任意时间点,矿工都可以通过增加新增扇区和扇区补充的抵押来增加新的存储。这样矿工就能变更他们能提供的 power。

使用 power 达成共识

目的:

每一轮选举一个(或多个)矿工,使得赢得选举的概率与每个矿工分配的存储成比例

filecoin 预期共识(Expected Consensus,EC)

    预期共识的基本直觉是确定性的,不可预测的

    预期的期望是每个周期内当选的 Leader 是 1,但一些周期内可能有 0 个或者许多的 Leader。

    在每个周期,每个区块链被延伸一个或多个区块,见下图

    区块线性扩展,但是数据结构是 DAG

    EC 是一个概率共识,每个周期都使得比前面的区块更加确定,最终达到了足够的确定性

1

2

3

4

5

6

7

8

9

10

选举方案

预期共识通过选举方案产生

1

选举方案

选举方案

选举方案属性 说明

公平 每个参与者每次选举只有一次试验,因为签名是确定性的,而且 t 和 rand(t)是固定的。随机值 rand(t)在时刻 t 之前是未知的

保密 由于有能力的攻击者不拥有 Mi 用来计算签名的秘钥

公开可验证 当选 Leader i ∈ Lt 可以通过给出 t,rand(t),H(i)/2L,来说服一个有效的验证者。鉴于前面的观点(复制证明与时间证明),有能力的攻击者在不拥有获胜秘密秘钥的情况下不能生成证明。

filecoin 智能合约

文件合约

允许用户对他们提供的存储服务进行条件编程,会形成一个多样化市场。

承包矿工:客户可以提前指定矿工提供服务而不参与市场

付款策略:客户可以为矿工设计不同的奖励策略,例如合约可以给矿工支付随着时间的推移越来高的费用

票务服务:合约可以允许矿工存放 token 和用于代表用户的存储/检索的支付

更复杂的操作:客户可以创建合约来运行数据更新

1

2

3

4

5

6

智能合约

用户可以将程序关联到其他系统(如以太坊)的交易上,他们不直接依赖存储的使用。

1

与其他系统的兼容

规格支持跨链交互,以便能将 filecoin 存储带入其他基于区块链的平台,同时也将其他平台的功能带入 filecoin。

1

交易市场

存储需求和供给组成了两个 Filecoin 市场:存储市场和检索市场。这两个市场是两个去中心化交易所,简而言之,客户和矿工们通过向各自的市场提交订单来设定他们请求服务或者提供服务的订单的价格。交易所为客户和矿工们提供了一种方式来查看匹配出价并执行订单。如果服务请求被成功满足,通过运行管理协议,网络保证了矿工得到报酬,客户将被收取费用。

可以类比为淘宝商城

1

2

存储市场

交易数据会上链,包含于区块之中。

本质上也属于 filecoin 智能合约中的文件合约。

20190214 上线的开发网络已支持

1

2

3

检索市场

交易数据不会上链,属于 offchain 的方式。

本质上也属于 filecoin 智能合约中的文件合约。

1

2

filecoin 节点

filecoin 节点相关

    node id 表示 filecoin 网络节点

    account id 并表示账号,默认与钱包地址一致

    wallet addr 表示钱包地址

    miner id 表示矿工 id

1

2

3

4

5

filecoin 节点

深入浅出区块链 - 打造高质量区块链技术博客,学区块链都来这里,关注知乎、微博 掌握区块链技术动态。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352