#sdk #ethereum #uniswap-v3

no-std uniswap-v3-sdk

Uniswap V3 SDK for Rust

37个版本 (破坏性更新)

0.32.0 2024年7月11日
0.30.0 2024年6月24日
0.27.0 2024年3月16日

#440 in 魔法豆

Download history 271/week @ 2024-04-29 8/week @ 2024-05-06 13/week @ 2024-05-13 2/week @ 2024-05-20 2/week @ 2024-05-27 159/week @ 2024-06-24 46/week @ 2024-07-01 243/week @ 2024-07-08 64/week @ 2024-07-15 16/week @ 2024-07-22 20/week @ 2024-07-29 104/week @ 2024-08-05

每月220次下载

MIT许可证

505KB
10K SLoC

Uniswap V3 SDK Rust

Unit Tests crates.io

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>

代码检查

使用 clippyrustfmt 进行代码检查。要运行代码检查器,使用

cargo clippy --all-targets --all-features -- -D warnings
cargo fmt --all -- --check

基准测试

使用 criterion 进行基准测试。要运行基准测试,使用 cargo bench

许可证

本项目采用 MIT 许可证

致谢

本项目的灵感来源于并改编自以下项目

依赖项

~32–51MB
~1M SLoC