#ethereum #mev #dex

bin+lib pair_sync

A simple library to get all pairs from any supported Dex and sync reserves

7 unstable releases (3 breaking)

0.4.3 Nov 30, 2022
0.4.2 Nov 30, 2022
0.3.1 Nov 24, 2022
0.2.0 Oct 1, 2022
0.1.1 Sep 19, 2022

#3 in #mev

Download history 137/week @ 2024-02-18 25/week @ 2024-02-25

162 downloads per month

MIT license

88KB
2K SLoC

pair_sync

A simple library to get all pairs from any supported Dex and sync reserves.

Filename: examples/sync-pairs.rs


#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    //Add rpc endpoint here:
    let rpc_endpoint = "";
    let provider = Arc::new(Provider::<Http>::try_from(rpc_endpoint).unwrap());

    let mut dexes = vec![];

    //Add UniswapV2
    dexes.push(Dex::new(
        //Specify the factory address
        H160::from_str("0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f").unwrap(),
        //Specify the dex variant
        DexVariant::UniswapV2,
        //Specify the factory contract's creation block number
        2638438,
    ));

    //Add Sushiswap
    dexes.push(Dex::new(
        H160::from_str("0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac").unwrap(),
        DexVariant::UniswapV2,
        10794229,
    ));

    //Add UniswapV3
    dexes.push(Dex::new(
        H160::from_str("0x1F98431c8aD98523631AE4a59f267346ea31F984").unwrap(),
        DexVariant::UniswapV3,
        12369621,
    ));

    //Sync pairs
    sync::sync_pairs(dexes, provider).await?;

    Ok(())
}

Supported Dexes

Dex Status
UniswapV2 variants
UniswapV3

Running Examples

To run any of the examples, supply your node endpoint to the endpoint variable in each example file. For example in sync-pairs.rs:

    //Add rpc endpoint here:
    let rpc_endpoint = "";

Once you have supplied a node endpoint, you can simply run cargo run --example <example_name>.

Filters

filter_blacklisted_tokens

  • Removes any pair from a Vec<Pair> where either token_a or token_b matches a blacklisted address.

filter_blacklisted_pools

  • Removes any pair from a Vec<Pair> where the pair_address matches a blacklisted address.

filter_blacklisted_addresses

  • Removes any pair from a Vec<Pair> where either token_a, token_b or the pair_address matches a blacklisted address.

filter_pools_below_usd_threshold

  • Removes any pair where the USD value of the pool is below the specified USD threshold.

filter_pools_below_weth_threshold

  • Removes any pair where the USD value of the pool is below the specified WETH threshold.

Upcoming Filters

filter_fee_tokens

  • Removes any pair where where either token_a or token_b is a token with fee on transfer.

Dependencies

~25–41MB
~732K SLoC