无状态区块链的限制
立即解锁
发布时间: 2025-08-31 01:44:58 阅读量: 3 订阅数: 9 AIGC 

### 无状态区块链的限制
在区块链技术的发展中,无状态区块链是一个备受关注的领域。它旨在解决传统区块链在状态管理方面的一些难题,然而,无状态区块链也面临着诸多限制。下面我们将详细探讨与之相关的技术概念、区块链模型以及这些限制在实际应用中的影响。
#### 1. 向量承诺(Vector Commitments)
向量承诺(VC)是一种将向量 `v = [v1, ..., vk]` 以简洁摘要 `C` 的形式存储的技术。对于每个索引 `i` 及其对应的分量 `vi`,该方案会生成一个证明 `πi`,用于结合摘要 `C` 验证 `vi` 的正确性。当某个分量发生变化时,摘要和部分或全部分量的证明可能会改变。
- **正确性**:VC 方案以极高的概率保证正确性,即对于已承诺的分量,正确生成的证明能够通过验证。
- **安全性**:难以找到针对第 `i` 个分量不同值 `si` 和 `s′i` 的两个有效证明。
利用向量承诺方案构建可撤销证明系统(RPS)的步骤如下:
1. **设置(Setup)**:RPS 的 `Setup` 函数调用 VC 方案的 `KeyGen` 函数,传入安全参数 `λ` 和向量长度 `n`(初始有效集的大小),以获取公共参数 `pp`。
2. **计算状态(ComputeState)**:给定 `pp` 和大小为 `n` 的初始有效集 `S`,首先对向量 `[s1, s2, ..., sn, ⊥, ..., ⊥]` 调用 VC 方案的承诺函数,输出作为全局状态的承诺 `C` 和辅助信息 `aux`。然后,对于每个 `si`,调用 VC 的 `Open` 函数生成证明 `wi`,最终输出承诺 `C` 和每个 `si` 的证明 `wi`。
3. **撤销(Revoke)**:对于 `T ⊆ S`,将承诺向量中对应 `si ∈ T` 的位置设置为 `⊥` 来撤销每个语句。假设不进行批量更新,每次撤销一个语句后更新状态和所有证明。具体来说,对于每个 `si ∈ T`,调用 `VC.Update(C, si, ⊥, i)` 获得更新后的状态 `C′` 和更新信息 `U`,然后使用 `VC.ProofUpdate` 更新其他分量 `sj` 的证明 `wj`。完成所有更新后,输出所有证明和最终的承诺。
4. **验证(Verify)**:给定 `C`、`si` 和 `wi`,对每个向量分量 `j` 调用 `VC.Ver(C, si, j, wi)`。当且仅当存在一个 `j` 使得 `VC.Ver` 输出为真时,`Verify` 输出为真。
以下是构建过程的流程图:
```mermaid
graph TD;
A[Setup] --> B[ComputeState];
B --> C[Revoke];
C --> D[Verify];
```
#### 2. 认证字典(Authenticated Dictionary)
认证字典是一种对一组键值对进行承诺的技术,能够生成并验证这些存储对的证明。随着时间的推移,可以添加更多的键值对,并且可以修改现有的键值对。当字典更新时,会生成一个新的共享承诺,可能会使旧的证明失效。
- **正确性**:原始数据和更新后数据的证明的存在对应于可撤销证明系统的正确性。
- **安全性**:难以生成不在存储集中的键值对的证明。
我们可以使用认证字典构建向量承诺方案,将向量的索引 - 值对作为键值对存储在字典中。因此,认证字典符合可撤销证明系统的框架,这意味着证明必须经常更新。
Aardvark 是一个最近提出的分布式认证字典,应用于无状态区块链。它提出了一种有趣的版本控制方案,以解决许多用户同时进行交易时需要频繁更改证明的问题。该方案通过存储未来 `τ` 时间内发生的所有交易和当前时间 `t` 的状态承诺,在 `t + τ` 之
0
0
复制全文
相关推荐










