walletconnect 0.0.1

WalletConnect client implementation in Rust.
Documentation
use futures::compat::Future01CompatExt;
use std::env;
use std::error::Error;
use std::process;
use walletconnect::transport::WalletConnect;
use walletconnect::{qr, Metadata};
use web3::types::TransactionRequest;
use web3::Web3;

fn main() {
    env_logger::init();
    if let Err(err) = futures::executor::block_on(run()) {
        log::error!("{}", err);
        process::exit(1);
    }
}

async fn run() -> Result<(), Box<dyn Error>> {
    let wc = WalletConnect::new(
        "examples-web3",
        Metadata {
            description: "WalletConnect-rs web3 transport example.".into(),
            url: "https://github.com/nlordell/walletconnect-rs".parse()?,
            icons: vec!["https://avatars0.githubusercontent.com/u/4210206".parse()?],
            name: "WalletConnect-rs Web3 Example".into(),
        },
        env::var("INFURA_PROJECT_ID")?,
        qr::print,
    )
    .await?;
    let web3 = Web3::new(wc);

    let accounts = web3.eth().accounts().compat().await?;
    println!("Connected accounts:");
    for account in &accounts {
        println!(" - {:?}", account);
    }

    let tx = web3
        .eth()
        .send_transaction(TransactionRequest {
            from: accounts[0],
            to: Some("000102030405060708090a0b0c0d0e0f10111213".parse()?),
            value: Some(1_000_000_000_000_000u128.into()),
            gas: None,
            gas_price: None,
            data: None,
            nonce: None,
            condition: None,
        })
        .compat()
        .await?;

    println!("Transaction sent:\n  https://etherscan.io/tx/{:?}", tx);

    Ok(())
}