Skip to content

Commit c6b1164

Browse files
committed
Merge branch 'main' of github.com-account3:SpiderMan670/Dapp-Learning
2 parents bd4cfe7 + b413a83 commit c6b1164

File tree

2 files changed

+147
-0
lines changed

2 files changed

+147
-0
lines changed

defi/DYDX/shard.md

+134
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
# SHARP(Shared Prover)技术概述
2+
3+
SHARP 是 StarkWare 开发的一种共享证明服务,旨在为多个应用生成有效性证明。它基于 STARK(Scalable Transparent Argument of Knowledge)技术,提供高效、安全的零知识证明。
4+
5+
## **工作原理**
6+
7+
SHARP 的主要功能是接收来自不同应用的证明请求,并生成相应的 STARK 证明。其工作流程如下:
8+
9+
1. **接收请求**:应用程序将交易数据和执行结果发送至 SHARP。
10+
2. **生成证明**:SHARP 使用 Cairo 语言编写的程序,对数据进行处理,生成 STARK 证明。
11+
3. **提交证明**:将生成的证明提交到以太坊主网,由链上合约验证其有效性。
12+
13+
## **技术细节**
14+
15+
### **Cairo 语言**
16+
SHARP 使用 Cairo 编写验证逻辑。Cairo 是一种图灵完备的编程语言,专为生成高效的 STARK 证明而设计。它允许开发者定义复杂的业务逻辑,同时保持高效的证明生成能力。
17+
18+
### **STARK 证明**
19+
- **高扩展性**:支持批量处理大量交易,显著提升吞吐量。
20+
- **透明性**:不需要可信设置,任何人都可以验证其有效性。
21+
- **量子安全**:对抗量子计算攻击提供更高的安全保障。
22+
23+
## **优势**
24+
25+
- **共享性**:SHARP 可同时为多个应用生成证明,提高计算资源利用率。
26+
- **高效性**:通过批量处理交易,显著降低单个应用的计算成本。
27+
- **安全性**:利用 STARK 技术,确保交易数据的隐私和完整性。
28+
29+
## **应用场景**
30+
31+
SHARP 广泛应用于高扩展性和高安全性需求的场景,包括:
32+
- 去中心化交易所
33+
- 支付系统
34+
- 区块链游戏
35+
36+
## **参考资料**
37+
38+
- [解析StarkWare的架构与生态:估值80亿美元的扩容潜力](https://zhuanlan.zhihu.com/p/530091142)
39+
- [万字拆解 StarkWare:80 亿美元的「以太坊扩容最佳团队」是否高估?](https://web3caff.com/zh/archives/18842)
40+
41+
---
42+
43+
## **Cairo 示例代码**
44+
45+
以下是一个简单的 Cairo 程序,用于验证输入是否是某个数的平方。
46+
47+
```cairo
48+
%builtins output
49+
50+
func main{output_ptr : felt*}():
51+
let x = 3
52+
let y = 9
53+
assert x * x = y # 验证 y 是否为 x 的平方
54+
return ()
55+
end
56+
```
57+
58+
### **代码解释**
59+
- **%builtins output**: 声明 Cairo 程序所需的内建组件。
60+
- **assert 语句**: 验证 `x` 的平方是否等于 `y`
61+
62+
---
63+
64+
### **批量验证逻辑**
65+
66+
以下展示了一个批量处理交易验证的 Cairo 示例:
67+
68+
```cairo
69+
%builtins range_check
70+
71+
from starkware.cairo.common.serialize import serialize_word
72+
73+
func validate_transactions{range_check_ptr}(transactions: felt*, n: felt) -> (result: felt):
74+
alloc_locals
75+
local sum = 0
76+
for i in range(n):
77+
let transaction = [transactions + i]
78+
assert transaction > 0 # 确保交易金额为正
79+
let sum = sum + transaction
80+
end
81+
return (sum)
82+
end
83+
84+
func main{range_check_ptr}():
85+
let (result) = validate_transactions([5, 10, 15], 3)
86+
serialize_word(result) # 输出验证结果
87+
return ()
88+
end
89+
```
90+
91+
### **代码解释**
92+
- **validate_transactions**: 验证多个交易并计算总和。
93+
- **assert 语句**: 确保每笔交易的金额为正。
94+
- **serialize_word**: 序列化输出验证结果。
95+
96+
---
97+
98+
## **Solidity 合约示例**
99+
100+
以下是与 StarkEx 系统交互的 Solidity 合约,用于验证 STARK 证明。
101+
102+
```solidity
103+
// SPDX-License-Identifier: MIT
104+
pragma solidity ^0.8.0;
105+
106+
interface IStarkVerifier {
107+
function verifyProof(bytes calldata proof, uint256[] calldata publicInputs) external returns (bool);
108+
}
109+
110+
contract StarkProofVerifier {
111+
IStarkVerifier public starkVerifier;
112+
113+
constructor(address _verifier) {
114+
starkVerifier = IStarkVerifier(_verifier);
115+
}
116+
117+
function verifyTransactionProof(bytes memory proof, uint256[] memory inputs) public view returns (bool) {
118+
return starkVerifier.verifyProof(proof, inputs);
119+
}
120+
}
121+
```
122+
123+
### **代码解释**
124+
- **IStarkVerifier**: 定义了 Stark 验证接口。
125+
- **verifyTransactionProof**: 接收 STARK 证明和公共输入,并调用验证器验证其有效性。
126+
127+
---
128+
129+
## **总结**
130+
131+
- **Cairo** 提供了灵活的编程能力,用于编写高效的验证逻辑。
132+
- **Solidity 合约** 负责在链上验证 SHARP 生成的 STARK 证明。
133+
134+
SHARP 是一个强大的共享证明工具,为区块链应用提供了高效、安全的扩展能力。

defi/DYDX/starkex.md

+13
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
1+
dYdX 为了提升交易性能和降低成本,采用了 StarkWare 开发的 StarkEx 作为其二层扩展方案。
2+
3+
**StarkEx 技术架构**
4+
5+
StarkEx 利用 STARK(Scalable Transparent Argument of Knowledge)技术,为 dYdX 提供高效的交易处理能力。其核心组件包括:
6+
7+
- **StarkEx 服务(StarkEx Service)**:处理用户的交易请求,并将其打包成批次。
8+
- **SHARP(SHARed Prover)**:为每个交易批次生成有效性证明。
9+
- **Stark 验证器(Stark Verifier)**:在以太坊主网上验证这些证明的有效性。
10+
- **Stark 合约(Stark Contract)**:在链上管理状态更新。
11+
12+
用户的交易首先由 StarkEx Service 处理,随后 SHARP 生成相应的有效性证明。Stark Verifier 验证该证明后,Stark Contract 在以太坊主网上更新状态。
13+
114
## Starkex 合约
215
dYdX: L2 Perpetual Smart Contract
316
dYdX: L2 On-Chain Operator

0 commit comments

Comments
 (0)