档案存储证明(PoAS) 共识保持了 中本聪 共识的诚实多数假设和无许可特性,同时没有巨量电力成本来挖矿。
解耦执行使得耕作/种收(farming)轻量化,并对”集合化“产生抗性,而农夫/种收者存储网络,则允许区块链大量“扩展”,但不会中心化。
区块和数据可用采样解耦,使得垂直扩容成为现实,并且我们本身独特的共识和计算分离,也使得执行者的水平扩容成本维持在 log(n) 水平
区块链三难困境 是一个由 Vitalik Buterin 创造的术语,用来描述创建一个安全、可扩展和去中心化区块链的挑战。 他认为,区块链在实践中只能达到三个特征中的两个。
安全 意味着为了保持安全和活跃度,必须要有超过50%的节点在运行。(假设大多数节点是诚实的)。
去中心化 这意味着要保持足够低的计算、存储和网络资源(门槛),使任何人都能在他们的笔记本电脑上运行一个节点。
可扩展性 意味着随着更多的用户加入网络和其计算机硬件的改善,交易吞吐量应该增加。
工作量证明(PoW) 或 "一个CPU一票" 是简单、安全和无许可的,但它的电力成本很高,不具备环境的可持续性,并导致中心化或池化(集合化)采矿。
权益证明 (PoS)或 "一币一票" 采用基于个人财富的虚拟采矿系统。 虽然生态友好,但PoS并不公平也不是无许可的,只是让富人更富的系统。
容量证明(PoC) 或 "一磁盘一票" 用存储密集的种收取代采矿。 理论上,PoC是安全、生态友好和公平的,但实际上大多数设计都转回PoW或PoS模型。
Ouroboros 之后,我们从区块链历史本身构建了一个安全的随机信标。 在每个位置,所有农民都在他们的 BST 中搜索任何足够接近挑战的标签,来满足难度设置。 然后他们可以将标签和相应的编码编译成 复制证明 (PoR) 并产生链上的下一个块。 然后,任何人都可以通过使用农夫/种收者的公钥反转编码并检查标签,低成本验证证明。 这使得种收在所需存储和计算得开销方面保持轻量。
为了防止模拟攻击,(该)挑战在许多连续的时段里被重新利用。 为了防止研磨攻击, 我们将复制证明与区块内容隔离, 同时将随机性完全建立在复制证明上。为了防止压缩攻击,我们要求农夫/种收者定期重新向其BST承诺。 为了防止长程攻击、贿赂攻击和时空折衷攻击,我们使用了一个简单的 以AES-256为依据的时间凭证(PoT),要查看完整分析,可以查看 确保Spartan安全一文.
农夫/种收者可以选择:到底是用他们的存储去要么 a)保留链的状态和历史或 b)最大限度地扩大他们的绘图规模和投资回报。
随着链长度的增加,农夫/种收者总是会选择后者,大不了变为轻客户端。 最糟糕的情况是,选择加入一个由受信任的运营方管理的种收池。
如果没有人存储历史记录,节点只能从中心化的供应方进行同步。 如果没有人维持状态,我们就必须依靠受信赖的第三方取得余额。
为了激励农夫/种收者保留历史,我们将 Spartan 空间证明 共识延伸到区块链本身历史的 存储证明 。 根据 档案存储证明 (PoAS)共识,每个农夫/种收者在其磁盘空间允许的情况下,储存链历史上尽量多珍贵的可证明独特片段。 农夫/种收者保存的历史越多,他们就越有可能被选来产生一个新的区块。 为了确保矿工储存尽可能多的独特的片段,我们执行一个最大的绘图面积,同时防止女巫式的多身份耕作/种收。
农夫/种收者集体存储历史,形成分布式存储网络,以确保历史总是可供下载。 为了提供适当的负载均衡和一致复制性,鼓励每个农民储存最接近其随机分配节点ID的片段。 为了防止历史丢失,区块 用纠删码 编码到源代码和校验器中。 为便于高效检索,农夫/种收者加入了简化 Kademlia 分布式哈希表 重要的是,这使客户端能够用一笔交易将数据嵌入,以及后来从分布式哈希表恢复这一部分历史,进而创建一个可扩展的不可变对象存储。
扩展吞吐量的一种方法是增加块的大小。 但这会导致更长的传播时间和更高的诚实分叉率,从而降低安全性。
另一种缩小规模的方法是用多链或分片,但现有的设计对于一个适应性强,以单一分片为目标的攻击方来说是不安全的。
这两种方法都会导致链上状态和历史快速增长,区块链在少数强大节点下变得臃肿和中心化。
子空间采用 Prism 可扩展性提案 不降低安全性实现高吞吐量处理交易 。 当与 数据可用采样 和 超轻客户端 结合使用时,耕作/种收(farming)可以保持低带宽和去中心化。
子空间为 PoC 共识扩展了Taiji 快速确认协议,使得农民在三个区块内实现近乎确定的终局,将新交易的确认延迟从几分钟缩短到几秒钟,并且无需依赖执行者。
未来是多链的,用户偏爱AMM而不是中心化交易所。子空间提供了连接众多链所需的layer1扩展性,同时允许进行去信任化、低延迟和高吞吐量的资产交换。
由于历史的成长可能远远超出任何一个农夫/种收者的存储能力,但依然可以有效定价。 子空间独有地够提供廉价、永久的 dApp 存储,同时仍然可以将数据提供到一个全局执行层。
通过将执行和存储解耦,然后分别进行扩展,Subspace允许更广泛的layer2结构,限制仅来自协议设计者的想象力。