#uniswap #token #address #exchange #decimal #chain #ethereum

无 std uniswap-sdk-core

使用 Rust 编程语言的 Uniswap SDK 核心库提供与 Uniswap 去中心化交易所交互的必要功能

27 个版本 (2 个稳定版本)

1.1.0 2024 年 8 月 23 日
1.0.0-rc2024 年 7 月 10 日
0.26.0 2024 年 7 月 9 日
0.20.1 2024 年 3 月 17 日

#657 in 魔法豆

Download history 133/week @ 2024-05-02 27/week @ 2024-05-09 4/week @ 2024-05-16 4/week @ 2024-05-23 10/week @ 2024-05-30 4/week @ 2024-06-06 2/week @ 2024-06-13 25/week @ 2024-06-20 32/week @ 2024-06-27 382/week @ 2024-07-04 180/week @ 2024-07-11 47/week @ 2024-07-18 32/week @ 2024-07-25 36/week @ 2024-08-01 109/week @ 2024-08-08 230/week @ 2024-08-15

每月 409 次下载
2 crates 中使用

MIT 许可证

110KB
2.5K SLoC

Uniswap SDK Core Rust

Unit Tests Lint crates.io

Rust 编程语言的一个自定义 Uniswap SDK 核心库,提供与 Uniswap 去中心化交易所交互的必要功能。

关于 no_std 的说明

默认情况下,此库不依赖于标准库 (std)。但是,可以通过启用 std 功能来使用 thiserror 进行错误处理。

快速入门

将以下内容添加到您的 Cargo.toml 中

[dependencies]
uniswap-sdk-core = "1.0.0"

并将以下内容添加到您的代码中

use uniswap_sdk_core::prelude::*;

示例

下面的代码展示了如何使用 token! 宏在以太坊主网上创建一个新的 Token 实例,用于 DAI 代币。

// The `prelude` module provides a convenient way to import a number of common dependencies at 
// once. This can be useful if you are working with multiple parts of the library and want to avoid
// having to import each dependency individually.
// Import necessary preludes and types
use uniswap_sdk_core::{prelude::*, token};

fn main() {
    // Define the chain ID, address, decimals, symbol, and name for the token
    const CHAIN_ID: u64 = 1; // Ethereum Mainnet
    const TOKEN_ADDRESS: &str = "0x6B175474E89094C44Da98b954EedeAC495271d0F"; // DAI Token Address
    const DECIMALS: u8 = 18;
    const SYMBOL: &str = "DAI";
    const NAME: &str = "Dai Stablecoin";

    // Use the `token!` macro to create a new `Token` instance
    let dai_token = token!(CHAIN_ID, TOKEN_ADDRESS, DECIMALS, SYMBOL, NAME);

    // Example usage of the `Token` methods
    println!("Token Address: {}", dai_token.address());
    println!("Is Native: {}", dai_token.is_native());

    // Example of comparing two tokens
    let another_dai_token = token!(CHAIN_ID, TOKEN_ADDRESS, DECIMALS, SYMBOL, NAME);
    println!("Are the tokens equal? {}", dai_token.equals(&another_dai_token));

    // Example of sorting tokens
    let another_token = token!(CHAIN_ID, "0000000000000000000000000000000000000002", DECIMALS, "ETH", "Ethereum");
    match dai_token.sorts_before(&another_token) {
        Ok(true) => println!("DAI sorts before ETH"),
        Ok(false) => println!("DAI does not sort before ETH"),
        Err(e) => println!("Error comparing tokens: {:?}", e),
    }
}

此示例演示了如何使用 token! 宏在以太坊主网上为 DAI 创建一个 Token 实例。

然后它打印代币的地址并检查它是否是原生代币(它不是,因此打印 false)。

它还比较了 DAI 代币与另一个 DAI 代币实例,以显示相同代币的两个实例被认为是相等的。

最后,它尝试在以太坊代币之前对DAI代币进行排序,这应该会打印出DAI在ETH之前排序的结果,前提是地址设置正确以进行此比较。

请记得将 "0x6B175474E89094C44Da98b954EedeAC495271d0F" 替换为您正在使用的实际DAI代币地址,如果您在处理不同的网络(例如测试网)时,请调整CHAIN_ID。

贡献

欢迎贡献!如果您发现了一个错误或有改进建议,请随时在GitHub仓库上提交问题或拉取请求。

许可证

本项目采用MIT许可证 - 请参阅LICENSE文件以获取详细信息。

致谢

Rust语言中的Uniswap SDK Core受到了原始Uniswap SDK的启发,旨在提供类似的功能。

使用

(如果您想添加项目到列表中,请私信或提交PR)

依赖项

~4.5–7MB
~127K SLoC