Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add SHARP of starEX #1224

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 134 additions & 0 deletions defi/DYDX/shard.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# SHARP(Shared Prover)技术概述

SHARP 是 StarkWare 开发的一种共享证明服务,旨在为多个应用生成有效性证明。它基于 STARK(Scalable Transparent Argument of Knowledge)技术,提供高效、安全的零知识证明。

## **工作原理**

SHARP 的主要功能是接收来自不同应用的证明请求,并生成相应的 STARK 证明。其工作流程如下:

1. **接收请求**:应用程序将交易数据和执行结果发送至 SHARP。
2. **生成证明**:SHARP 使用 Cairo 语言编写的程序,对数据进行处理,生成 STARK 证明。
3. **提交证明**:将生成的证明提交到以太坊主网,由链上合约验证其有效性。

## **技术细节**

### **Cairo 语言**
SHARP 使用 Cairo 编写验证逻辑。Cairo 是一种图灵完备的编程语言,专为生成高效的 STARK 证明而设计。它允许开发者定义复杂的业务逻辑,同时保持高效的证明生成能力。

### **STARK 证明**
- **高扩展性**:支持批量处理大量交易,显著提升吞吐量。
- **透明性**:不需要可信设置,任何人都可以验证其有效性。
- **量子安全**:对抗量子计算攻击提供更高的安全保障。

## **优势**

- **共享性**:SHARP 可同时为多个应用生成证明,提高计算资源利用率。
- **高效性**:通过批量处理交易,显著降低单个应用的计算成本。
- **安全性**:利用 STARK 技术,确保交易数据的隐私和完整性。

## **应用场景**

SHARP 广泛应用于高扩展性和高安全性需求的场景,包括:
- 去中心化交易所
- 支付系统
- 区块链游戏

## **参考资料**

- [解析StarkWare的架构与生态:估值80亿美元的扩容潜力](https://zhuanlan.zhihu.com/p/530091142)
- [万字拆解 StarkWare:80 亿美元的「以太坊扩容最佳团队」是否高估?](https://web3caff.com/zh/archives/18842)

---

## **Cairo 示例代码**

以下是一个简单的 Cairo 程序,用于验证输入是否是某个数的平方。

```cairo
%builtins output

func main{output_ptr : felt*}():
let x = 3
let y = 9
assert x * x = y # 验证 y 是否为 x 的平方
return ()
end
```

### **代码解释**:
- **%builtins output**: 声明 Cairo 程序所需的内建组件。
- **assert 语句**: 验证 `x` 的平方是否等于 `y`。

---

### **批量验证逻辑**

以下展示了一个批量处理交易验证的 Cairo 示例:

```cairo
%builtins range_check

from starkware.cairo.common.serialize import serialize_word

func validate_transactions{range_check_ptr}(transactions: felt*, n: felt) -> (result: felt):
alloc_locals
local sum = 0
for i in range(n):
let transaction = [transactions + i]
assert transaction > 0 # 确保交易金额为正
let sum = sum + transaction
end
return (sum)
end

func main{range_check_ptr}():
let (result) = validate_transactions([5, 10, 15], 3)
serialize_word(result) # 输出验证结果
return ()
end
```

### **代码解释**:
- **validate_transactions**: 验证多个交易并计算总和。
- **assert 语句**: 确保每笔交易的金额为正。
- **serialize_word**: 序列化输出验证结果。

---

## **Solidity 合约示例**

以下是与 StarkEx 系统交互的 Solidity 合约,用于验证 STARK 证明。

```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IStarkVerifier {
function verifyProof(bytes calldata proof, uint256[] calldata publicInputs) external returns (bool);
}

contract StarkProofVerifier {
IStarkVerifier public starkVerifier;

constructor(address _verifier) {
starkVerifier = IStarkVerifier(_verifier);
}

function verifyTransactionProof(bytes memory proof, uint256[] memory inputs) public view returns (bool) {
return starkVerifier.verifyProof(proof, inputs);
}
}
```

### **代码解释**:
- **IStarkVerifier**: 定义了 Stark 验证接口。
- **verifyTransactionProof**: 接收 STARK 证明和公共输入,并调用验证器验证其有效性。

---

## **总结**

- **Cairo** 提供了灵活的编程能力,用于编写高效的验证逻辑。
- **Solidity 合约** 负责在链上验证 SHARP 生成的 STARK 证明。

SHARP 是一个强大的共享证明工具,为区块链应用提供了高效、安全的扩展能力。
13 changes: 13 additions & 0 deletions defi/DYDX/starkex.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,16 @@
dYdX 为了提升交易性能和降低成本,采用了 StarkWare 开发的 StarkEx 作为其二层扩展方案。

**StarkEx 技术架构**

StarkEx 利用 STARK(Scalable Transparent Argument of Knowledge)技术,为 dYdX 提供高效的交易处理能力。其核心组件包括:

- **StarkEx 服务(StarkEx Service)**:处理用户的交易请求,并将其打包成批次。
- **SHARP(SHARed Prover)**:为每个交易批次生成有效性证明。
- **Stark 验证器(Stark Verifier)**:在以太坊主网上验证这些证明的有效性。
- **Stark 合约(Stark Contract)**:在链上管理状态更新。

用户的交易首先由 StarkEx Service 处理,随后 SHARP 生成相应的有效性证明。Stark Verifier 验证该证明后,Stark Contract 在以太坊主网上更新状态。

## Starkex 合约
dYdX: L2 Perpetual Smart Contract
dYdX: L2 On-Chain Operator
Expand Down
Loading