7 releases

0.2.8 Oct 19, 2024
0.2.7 Oct 8, 2024
0.2.6 Sep 23, 2024
0.2.1 Aug 21, 2024
0.1.1 Dec 7, 2023

#545 in #sdk

Download history 137/week @ 2024-08-20 12/week @ 2024-09-10 716/week @ 2024-09-17 181/week @ 2024-09-24 35/week @ 2024-10-01 169/week @ 2024-10-08 175/week @ 2024-10-15 17/week @ 2024-10-22

402 downloads per month

MIT/Apache

76KB
2K SLoC

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.

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.

Dependencies

~4–16MB
~194K SLoC