Skip to content

Commit

Permalink
wip: add Validium
Browse files Browse the repository at this point in the history
  • Loading branch information
SpiderMan670 committed Nov 6, 2024
1 parent 5a8cded commit 2a536ff
Showing 1 changed file with 128 additions and 0 deletions.
128 changes: 128 additions & 0 deletions defi/DYDX/validium.md
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)

0 comments on commit 2a536ff

Please sign in to comment.