26 lines
1.0 KiB
Rust
26 lines
1.0 KiB
Rust
|
use anyhow::Result;
|
||
|
use ethers::{utils::parse_ether, prelude::*};
|
||
|
|
||
|
#[tokio::main]
|
||
|
async fn main() -> Result<()> {
|
||
|
// Connect over websockets
|
||
|
let provider = Provider::new(Ws::connect("ws://localhost:8545").await?);
|
||
|
// Instantiate the connection to ledger with Ledger Live derivation path and
|
||
|
// the wallet's index. Alternatively, you may use Legacy with the wallet's
|
||
|
// index or supply the full HD path string. You may also provide the chain_id
|
||
|
// (here: mainnet) for EIP155 support.
|
||
|
let ledger = Ledger::new(HDPath::LedgerLive(0), Some(1)).await?;
|
||
|
let client = Client::new(provider, ledger).await?;
|
||
|
|
||
|
// Create and broadcast a transaction (ENS enabled!)
|
||
|
// (this will require confirming the tx on the device)
|
||
|
let tx = TransactionRequest::new()
|
||
|
.to("vitalik.eth")
|
||
|
.value(parse_ether(10)?);
|
||
|
let tx_hash = client.send_transaction(tx, None).await?;
|
||
|
|
||
|
// Get the receipt
|
||
|
let receipt = client.pending_transaction(tx_hash).confirmations(3).await?;
|
||
|
Ok(())
|
||
|
}
|