37个版本 (破坏性更新)
0.32.0 | 2024年7月11日 |
---|---|
0.30.0 | 2024年6月24日 |
0.27.0 | 2024年3月16日 |
#440 in 魔法豆
每月220次下载
505KB
10K SLoC
Uniswap V3 SDK Rust
Uniswap V3的Rust SDK,用于构建应用程序。从TypeScript Uniswap/v3-sdk 迁移。
它具有与TypeScript SDK匹配的单元测试,功能齐全。但错误处理并不像人们期望的那样优雅。错误处理仍在进行中。
功能
-
具有可读性和性能重点的Uniswap V3 SDK的Rust实现
-
使用alloy-rs类型
-
基于Uni V3 Lib中提出的优化,在Uniswap V3 Math In Rust中重新实现了数学库
-
广泛的单元测试和基准测试
-
一个
extensions
功能,用于与Uniswap V3相关的附加功能,包括pool
模块,从池密钥创建Pool
结构体,并使用RPC客户端检索指定池在tick范围内的流动性映射position
模块,从代币ID创建Position
结构体,并使用RPC客户端检索指定所有者的所有池的状态和池price_tick_conversions
模块,用于在价格和tick之间进行转换- 用于通过单个
eth_call
调用获取 ticks 的ephemeral_tick_data_provider
模块,使用 临时合约
展开以查看基准测试
函数 | 时间 | 参考 |
---|---|---|
最高有效位 | 8.3693 微秒 | 39.691 微秒 |
最低有效位 | 5.0592 微秒 | 16.619 微秒 |
get_sqrt_ratio_at_tick | 5.2105 微秒 | 71.137 微秒 |
get_tick_at_sqrt_ratio | 34.331 微秒 | 191.08 微秒 |
入门
将以下内容添加到您的 Cargo.toml
文件中
uniswap-v3-sdk = { version = "0.32.0", features = ["extensions", "std"] }
用法
该包结构遵循 TypeScript SDK 的结构,但使用 snake_case
而不是 camelCase
为了方便导入,请使用序言
use uniswap_v3_sdk::prelude::*;
贡献
欢迎贡献。如果您有任何问题或建议,请提交 issue。
测试
使用以下命令运行测试
cargo test
对于核心库。要运行扩展的测试,使用
cargo test --all-features --lib extensions -- --test-threads=1
要测试特定模块,使用 cargo test --test <module_name>
代码检查
使用 clippy
和 rustfmt
进行代码检查。要运行代码检查器,使用
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt --all -- --check
基准测试
使用 criterion
进行基准测试。要运行基准测试,使用 cargo bench
许可证
本项目采用 MIT 许可证。
致谢
本项目的灵感来源于并改编自以下项目
依赖项
~32–51MB
~1M SLoC