pwr-rs

Crates.iopwr-rs
lib.rspwr-rs
version
sourcesrc
created_at2023-12-07 09:00:30.639408
updated_at2025-02-10 15:56:14.636869
descriptionPWR Chain Rust Tool
homepagehttps://pwrlabs.io/
repositoryhttps://github.com/pwrlabs/pwrrs
max_upload_size
id1060830
Cargo.toml error:TOML parse error at line 19, column 1 | 19 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
Khairallah AL-Awady (KhairallahA)

documentation

README

PWR Chain Rust SDK

PWR Rust is a Rust library for interacting with the PWR network. It provides an easy interface for wallet management and sending transactions on PWR.

Pull Requests welcome crates-badge

Installation

# latest official release (main branch)
cargo add pwr-rs

🌐 Documentation

How to Guides 🔜 & API 💻

Play with Code Examples 🎮

💫 Getting Started

Import the library:

use pwr_rs::{
    Wallet, 
    RPC, 
};

Set your RPC node:

let rpc = RPC::new("https://pwrrpc.pwrlabs.io/").await.unwrap();

Generate a new wallet:

let private_key = "0xac0974bec...f80";
let wallet = Wallet::from_hex(&private_key).unwrap();

Get wallet address:

let address = wallet.get_address();

Get wallet balance:

let balance = wallet.get_balance().await;

Transfer PWR tokens:

wallet.transfer_pwr("recipientAddress".to_string(), 1000).await;

Sending a transcation to the PWR Chain returns a Response object, which specified if the transaction was a success, and returns relevant data. If the transaction was a success, you can retrieive the transaction hash, if it failed, you can fetch the error.

use pwr_rs::Wallet;
async fn main() {
    let private_key = "0xac0974bec...f80";
    let wallet = Wallet::from_hex(&private_key).unwrap();

    let trx_hash = wallet.transfer_pwr("recipientAddress".to_string(), 1000).await;
    println!("Transaction Hash: {trx_hash}");
}

Send data to a VM:

use pwr_rs::Wallet;
async fn main() {
    let private_key = "0xac0974bec...f80";
    let wallet = Wallet::from_hex(&private_key).unwrap();

    let data = vec!["Hello World!"];
    let data_as_bytes: Vec<u8> = data.into_iter().flat_map(|s| s.as_bytes().to_vec()).collect();

    let tx_hash = wallet.send_vm_data(123, data_as_bytes).await;
    println!("Transaction Hash: {tx_hash}");
}

Other Static Calls

Get RPC Node Url:

Returns currently set RPC node URL.

let url = rpc.get_node_url();

**Get Fee Per Byte: **

Gets the latest fee-per-byte rate.

let fee = rpc.get_fee_per_byte();

Get Balance Of Address:

Gets the balance of a specific address.

let balance = rpc.get_balance_of_address("0x...").await.unwrap();

Get Nonce Of Address:

Gets the nonce/transaction count of a specific address.

let nonce = rpc.get_nonce_of_address("0x...").await.unwrap();

✏️ Contributing

If you consider to contribute to this project please read CONTRIBUTING.md first.

You can also join our dedicated channel for pwr-rs on the PWR Chain Discord

📜 License

Copyright (c) 2024 PWR Labs

Licensed under the MIT license.

Commit count: 24

cargo fmt