惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

AI
AI
博客园 - 叶小钗
Blog — PlanetScale
Blog — PlanetScale
Microsoft Azure Blog
Microsoft Azure Blog
Vercel News
Vercel News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
A
About on SuperTechFans
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 【当耐特】
Martin Fowler
Martin Fowler
阮一峰的网络日志
阮一峰的网络日志
D
Docker
Jina AI
Jina AI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The Register - Security
The Register - Security
J
Java Code Geeks
S
SegmentFault 最新的问题
月光博客
月光博客
G
Google Developers Blog
美团技术团队
Last Week in AI
Last Week in AI
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
T
The Blog of Author Tim Ferriss
腾讯CDC
Recent Announcements
Recent Announcements
Recorded Future
Recorded Future
The Cloudflare Blog
有赞技术团队
有赞技术团队
博客园_首页
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
B
Blog
I
InfoQ
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
F
Fortinet All Blogs
B
Blog RSS Feed
Engineering at Meta
Engineering at Meta
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Security Blog
Microsoft Security Blog
MongoDB | Blog
MongoDB | Blog
爱范儿
爱范儿
D
DataBreaches.Net
F
Full Disclosure
M
MIT News - Artificial intelligence
博客园 - 司徒正美
H
Help Net Security

smallyu的博客

为什么买的加密货币一定要去中心化 RISC-V 虚拟机无法代替 EVM 虚拟机 Polkadot 的 Existential Deposit 机制错在哪里 利息,套利,交易策略,金融市场 LayerZero 从来不挑战比特币的地位 默认参数引起的以太坊节点运行错误 硬件钱包与资产安全 预测市场比币圈更赌场 为什么去中心化的跨链桥不可能实现 我对于 AI 时代的答案 不要投资任何隐私币 区块链技术世界的三大真理 以太坊 AA 钱包的致命问题是什么 基于 AI 语义执行的 MCP 区块链的设计 一个集成 Geth 和 CometBFT 的兼容层 我的加密货币定投策略(二) DeFi 基础: 理解 AMM 定价机制 Go 语言 GMP 调度器的原理是什么 Web3 项目分析计划 对 Psyche Network 项目的分析 continuation 教程: 理解 CPS 如何开发一个比特币符文(Runes)协议 比特币脚本开发教程 我从王垠的计算机科学视频班学到了什么 区块链技术面试题(2025年版) Rust 语言容易让新手困惑的一个“过度优化” Solana 智能合约开发教程 (1) 尝试开发一个最小 EVM 虚拟机 基于 ZK 的链上身份系统设计 一个 Web3 打赏系统的设计 鼓吹 Cursor 的人技术能力都差 关于 Code Review 的礼节 假如启动一个新的以太坊 PoS 网络 发行加密货币的最好方式 所有 BFT 共识的区块链都是中心化的 对 2025 年区块链行业的预测 Restaking 项目的经济难题 如何看懂任意区块链项目的技术架构 为什么不要做以太坊的二次开发 为什么不要做智能合约开发和 DeFi 开发 我的加密货币定投策略(一) PoS 类型的区块链如何处理分叉 Ethereum Casper 为什么需要 EIP-7251 区块链中的 PBFT 不需要第二次投票 开发者的思维方式 发币的核心要点 炒币投资的小 tips 为什么说 PoW 比 PoS 更加去中心化 牛市对普通人来说意味着什么 如何健康地远程工作 为什么比特币不用概率加密函数 程序员的 “服从权威” 心理 区块链技术面试题 如何区分公有链和联盟链 对 Layer 2 项目创业想法的回复 对区块链共识机制的理解 Pebbling Game 鹅卵石游戏 PDP 文件证明的局限性 不要小瞧 ChatGPT 为什么炒币不是一个好主意 一种在区块链上生成随机数的机制 为什么以太坊的私钥计算不可逆 关于以太坊的私钥碰撞 “猜均值的2/3” dApp 游戏设计 Proofs of Retrievability 文件证明的含义 对 S-PDP 文件证明的示例和解释 我的加密货币交易机器人 对区块链行业的见闻 随机确认块的共识机制 VRF + BFT 共识引起交易失败的问题 为什么要重视编程思想 对 Web 3.0 的理解 GitBook 好用吗? 一种区块链节点存储扩容的方式 一种基于“自我中心主义”的共识机制 链表常见算法题及解析 基于 Multi-Linked List 的区块链设想 理解哈希函数与序列化 联盟链比公有链差在哪儿 在 Dijkstra 算法中保存路径 为什么数字货币使用区块链是政治问题 区块链:下一代数字身份认证体系的基石 网页技术能实现 3D 建模吗? 给区块链一个定义 从 Erlang 开始了解 Actor 模型 一种侧边导航栏的交互方式 Rust 的 ownership 是什么? Haskell 中的 Monad 是什么? 浅析 Libra 背后的区块链技术 对区块链的理性认识 Rust 基础语法概述 基于 Java 的爬虫框架 WebCollector Kotlin:简化版的 Scala JavaScript 有关联数组吗? 主流编程语言的异常处理机制 Go 语言基本语法 Scala 语法基础 用 Scala 改写 Java 浅度实践 Python 获取海贼王更新信息 HTML5 音乐可视化
Proof of Storage/Space/Replication 的区别
2022-12-20 · via smallyu的博客

2022-12-20

时间线

简称 全称 年份
PDP Provable Data Possession 2007
PORs Proofs of Retrievability 2007
PoS Proofs of Storage 2009
PoS Proofs of Space 2013
PoST Proofs of Space-Time 2016
PoRep Proof of Replication 2017
PoC Proof of Capacity 2017

Proofs of Storage

PDP 和 PORs 在 2007 年各自独立地发表,在文件证明的方式上各有优劣,是对同一类问题不同分支的解决方案。

PoS(Proofs of Storage)的概念至少在 2009 年就已经出现,是一种统称,指客户端对服务端上文件进行验证的交互式协议,同时包含了 PDP 和 PORs 的范畴。比如论文《Proofs of Storage from HomomorphicIdentification Protocols》,第一作者是 Giuseppe Ateniese。

由于 2009 年区块链还没什么发展,所以 PoS(Proofs of Storage)和共识机制没有关系,和 PoS(Proof of Stack)也仅仅只是简称撞了,没什么联系。

PDP 和 PORs 属于 PoS 的前身,PoS 把它们用一个名字统一起来了。

Proofs of Space

PoS(Proofs of Space)开始于 2013 年的论文《Proofs of Space》,第一作者是 Stefan Dziembowski。

也是巧合,PoS(Proofs of Space)和 PoS(Proofs of Storage)的简称一样,有时候可能会引起混淆。这个小节的 PoS 指 Proofs of Space。

PoS 的理念是,对标 PoW(Proof of Work)。所以从 PoS 开始,就是区块链中的概念了,它是一种共识机制。

PoW 是用 CPU 的算力进行挖矿,PoS 的想法是用磁盘的容量进行挖矿,想办法证明服务器上有某个数值的磁盘空间。

最基础的办法,是客户端生成一个文件,比如 1G,然后发送到服务器上,接着只要验证服务器上保存了那个文件,就能证明服务器确实有 1G 的磁盘空间了。不过这个办法太笨了,不但消耗客户端的磁盘空间,还会给网络传输带来非常大的压力。

PoS 提供的办法是,使用一种 hard to pebble graphs 的数据结构,比如 Merkle hash tree。这种数据结构的特点是,生成上层的数据必须要依赖于下一层的数据。

比如在使用了 Merkle hash tree 的系统里,客户端可以要求服务端,返回某一个上层节点的整条链路,然后自行验算路径是否正确。可以交叉验证多条链路,基本上就能保证服务端的可信了。

Proofs of Space-Time

PoST(Proofs of Space-Time)出现于 2016 年,论文标题《Simple Proofs of Space-Time and Rational Proofs of Storage》,第一作者是 Tal Moran。

PoST 是基于 PoS(Proofs of Space)的方案,因为 PoS 可以证明服务器端拥有一定量的磁盘空间,但是不能证明,服务器端的空间容量一直保持在期望的水平。比如,在进行验证的时候,服务器的磁盘空间是 1G,一旦验证结束,服务器就把空间用到别的地方了。再验证的时候,就再生成一遍 1G 的文件,用于验证。

所以 PoS 提议每 1 分钟都进行一次验证,以保证服务器的诚实。这显然不是很聪明的做法。

PoST 期望解决这个问题。PoST 提供的方法是,加大初始化阶段的难度,也就是 PoS 生成文件的阶段,想办法让服务器,必须要足够多的时间,才能够生成文件。

怎么保证需要足够多的时间呢,PoW(Proof of Work)就能够做到,比如计算 2^30 次哈希值,就意味着花费了那么多的时间。

PoST 就把 PoW 和 PoS 结合了起来,在初始化的阶段,让服务器必须消耗足够多的时间,才能够生成文件,然后在证明的阶段,去验证初始化阶段生成的文件。

Proof of Replication

PoRep(Proof of Replication)源自 2017 年的论文《Proof of Replication》,第一作者是 Juan Bene。

PoRep 属于 Proofs of Storage 的一种,是 Protocol Labs 的研究成果,Protocol Labs 还开发了 IPFS 和 Filecoin。PoRep 也是 Filecoin 在使用的共识机制。

PoRep 基于 Proofs of Space 和 Proofs of Retrievability,在其基础上增加了一种能力,就是可以区分出服务器端的副本数量。做法也相对简单,就是在生成 Tags 的阶段,给每个副本都带一个唯一标识,让每一份副本都变得独一无二。

因为是去中心化的网络,Filecoin 需要保证整个网络中存在多个副本,如果节点联合起来作恶,之前的证明方式是无法应对的,所以 Filecoin 使用了 PoRep 的共识机制。

2017 版的 PoRep 相对简单,在 2018 版的 PoRep 里,才开始提到使用 Depth Robust Graphs 的数据结构。论文标题是《PoReps: Proofs of Space on Useful Data》,第一作者是 Ben Fisch。

Proof of Capacity

PoC(Proof of Capacity)是 2017 年 Burstcoin 区块链使用的一种共识机制,

PoC 提供了一种挖矿的方式,产生新的区块需要一个 nonce 值:

1 nonce = 8192 hash value = 4095 scoops

其中 hash value 是使用 Shabal 作为哈希函数计算出的哈希值,每两个哈希值为一个 scoops。

在 0 到 4095 个 scoop nubmer 中随机选出一个,然后和相应的 nonce 结合,去计算出一个 deadline 值。和其他所有节点相比,谁的 deadline 值最小,谁就可以产生新的区块。

PoC 更倾向于一种纯粹的共识机制。