zksync-web3-rs 0.2.1

Rust SDK for zkSync Era
Documentation
use std::env;

use ethers::{
    abi::Abi,
    prelude::{MiddlewareBuilder, SignerMiddleware},
    providers::{Http, Provider},
    signers::{LocalWallet, Signer, Wallet},
    types::Bytes,
};
use ethers_contract::core::k256::ecdsa::SigningKey;
use serde::Deserialize;

use crate::zks_utils::ERA_CHAIN_ID;

#[derive(Deserialize)]
pub(crate) struct CompiledContract {
    pub abi: Abi,
    pub bin: Bytes,
}

pub fn eth_provider() -> Provider<Http> {
    let url: String = env::var("ZKSYNC_WEB3_RS_L1_PROVIDER_URL").unwrap();
    Provider::try_from(url).unwrap()
}

pub fn era_provider() -> Provider<Http> {
    let url: String = env::var("ZKSYNC_WEB3_RS_L2_PROVIDER_URL").unwrap();
    Provider::try_from(url).unwrap()
}

pub fn local_wallet() -> LocalWallet {
    "0x7726827caac94a7f9e1b160f7ea819f172f7b6f9d2a97f992c38edeab82d4110"
        .parse::<LocalWallet>()
        .unwrap()
        .with_chain_id(ERA_CHAIN_ID)
}

pub fn era_signer() -> SignerMiddleware<Provider<ethers::providers::Http>, Wallet<SigningKey>> {
    let signer = Wallet::with_chain_id(
        "0x7726827caac94a7f9e1b160f7ea819f172f7b6f9d2a97f992c38edeab82d4110"
            .parse::<Wallet<SigningKey>>()
            .unwrap(),
        ERA_CHAIN_ID,
    );
    era_provider().with_signer(signer)
}