-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5a8cded
commit 2a536ff
Showing
1 changed file
with
128 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
### **Validium 详解** | ||
|
||
**Validium** 是一种扩展解决方案,属于第二层(Layer 2)扩展技术,通过将大部分数据存储移出链,同时使用零知识证明(ZK-Proofs)保证安全性。Validium 旨在在不牺牲安全性的前提下,极大提高区块链网络的可扩展性和交易速度。 | ||
|
||
--- | ||
|
||
### **Validium 与 Rollup 的对比** | ||
|
||
| 特性 | Validium | Rollup | | ||
|-----------------------|-------------------------------------------|------------------------------------------| | ||
| **数据存储位置** | 链下(Off-Chain) | 链上(On-Chain) | | ||
| **扩展性** | 更高,支持数千 TPS | 相对较低 | | ||
| **安全性** | 基于零知识证明,信任模型取决于数据可用性 | 基于零知识或欺诈证明,完全链上验证 | | ||
| **成本** | 更低,Gas 费用少 | 相对较高 | | ||
| **主要用途** | 高频交易、支付网络 | DeFi 应用,如交易所、借贷协议 | | ||
|
||
--- | ||
|
||
### **Validium 的核心原理** | ||
|
||
1. **链下数据存储** | ||
在 Validium 中,交易数据存储在链下的服务器或分布式数据库中,而不是直接写入区块链。 | ||
|
||
2. **零知识证明(ZK-Proof)** | ||
Validium 使用 zk-SNARK 或 zk-STARK 技术生成证明,链下数据的合法性由这些证明来验证。 | ||
|
||
3. **数据可用性保证** | ||
虽然数据存储在链下,但零知识证明确保数据的完整性和正确性,且数据可用性由多个节点维护。 | ||
|
||
--- | ||
|
||
### **JavaScript 实现零知识证明的示例** | ||
|
||
我们可以用 JavaScript 来模拟 Validium 的基本验证逻辑,假设交易数据存储在链下,同时生成和验证零知识证明。 | ||
|
||
#### **1. 安装 `snarkjs`** | ||
|
||
`snarkjs` 是一个流行的零知识证明库,支持 zk-SNARK 生成和验证。 | ||
|
||
```bash | ||
npm install snarkjs | ||
``` | ||
|
||
#### **2. 模拟交易验证过程** | ||
|
||
```javascript | ||
const snarkjs = require("snarkjs"); | ||
|
||
(async () => { | ||
// 链下交易数据 (模拟) | ||
const offChainData = { | ||
sender: "Alice", | ||
receiver: "Bob", | ||
amount: 100 | ||
}; | ||
|
||
// 假设的零知识证明生成函数 | ||
function generateProof(transaction) { | ||
// 这里我们用简单逻辑模拟证明生成过程 | ||
return { | ||
proof: `proof-of-${transaction.sender}-to-${transaction.receiver}-${transaction.amount}`, | ||
publicSignals: [transaction.sender, transaction.receiver, transaction.amount] | ||
}; | ||
} | ||
|
||
// 假设的验证函数 | ||
function verifyProof(proof, expectedSignals) { | ||
// 检查生成的 proof 和提供的 publicSignals 是否匹配 | ||
const isValid = proof.publicSignals.every( | ||
(value, index) => value === expectedSignals[index] | ||
); | ||
|
||
return isValid ? "Proof is valid" : "Proof is invalid"; | ||
} | ||
|
||
// 生成零知识证明 | ||
const proof = generateProof(offChainData); | ||
|
||
console.log("Generated Proof:", proof); | ||
|
||
// 验证零知识证明 | ||
const result = verifyProof(proof, ["Alice", "Bob", 100]); | ||
console.log("Verification Result:", result); | ||
})(); | ||
``` | ||
|
||
#### **输出结果** | ||
```bash | ||
Generated Proof: { proof: 'proof-of-Alice-to-Bob-100', publicSignals: [ 'Alice', 'Bob', 100 ] } | ||
Verification Result: Proof is valid | ||
``` | ||
--- | ||
### **Validium 在 DYDX 中的应用** | ||
DYDX 交易平台采用 Validium 技术,通过 StarkWare 的 StarkEx 系统实现: | ||
- **链下存储用户账户余额和交易历史**,提高了吞吐量和交易速度。 | ||
- **链上验证零知识证明**,确保交易数据的正确性和一致性。 | ||
--- | ||
### **Validium 的优势** | ||
1. **高扩展性** | ||
Validium 支持每秒数千甚至数万笔交易,非常适合高频交易场景。 | ||
2. **低成本** | ||
由于链上存储和计算需求减少,交易成本显著降低。 | ||
3. **数据隐私** | ||
数据存储在链下,用户交易数据不会公开,提高隐私性。 | ||
--- | ||
### **适用场景** | ||
- **高频交易平台**:如 DYDX 等去中心化交易所。 | ||
- **支付网络**:处理大量小额快速支付。 | ||
- **NFT 市场**:高频铸造、交易和转移 NFT。 | ||
--- | ||
### **参考链接** | ||
- [Validium 技术介绍](https://www.chainnews.com/articles/669485806574.htm) | ||
- [StarkWare 官网](https://starkware.co/) | ||
- [snarkjs 官方文档](https://github.com/iden3/snarkjs) |