solan

Crates.iosolan
lib.rssolan
version0.1.2
created_at2025-10-17 16:44:21.536786+00
updated_at2025-10-17 17:18:15.301713+00
description使用自定义 RPC_URL 与私钥,签名并转出 SOL 到目标地址。
homepage
repositoryhttps://gitee.com/luzhihaoTestingLab/useful-cargo-packages
max_upload_size
id1887913
size145,292
luzhihaoTestingLab (luzhihaoTestingLab)

documentation

https://docs.rs/solan

README

solan

使用自定义 RPC_URL 与用户私钥,将 SOL 转出到目标地址。支持私钥字符串三种格式:

  • 0x 十六进制:0x + 128 个 hex(64 字节 Keypair)或 64 个 hex(32 字节种子)
  • JSON 数组:64 个 u8(Keypair)或 32 个 u8(种子,Solana CLI 导出的文件常见为 64 个)
  • Base58 字符串:解码后为 64 字节 Keypair 或 32 字节种子

目标地址支持:

  • Base58(常见的 Solana 地址格式)
  • 0x 十六进制(32 字节,0x + 64 个 hex)

说明:你在描述中写了“eth数量”,此处按更符合场景的 SOL 数量 处理。参数 amount_sol 代表以 SOL 为单位的金额,内部会自动换算为 lamports(1 SOL = 1_000_000_000 lamports)。

安装

cargo add solan

或在 Cargo.toml 添加:

[dependencies]
solan = "0.1"

使用示例

use solan::transfer_sol;

fn main() {
    // 示例:使用 devnet 测试网。生产请使用你自己的 RPC。
    let rpc_url = "https://api.devnet.solana.com";

    // 私钥字符串:支持三种形式
    // 1) 0x 十六进制:64字节 Keypair (0x + 128 hex) 或 32字节种子 (0x + 64 hex)
    // 2) JSON 数组:64字节或32字节
    // 3) Base58:解码后应为64字节或32字节
    let secret = "0x<128 hex 或 64 hex>"; // 替换为你的私钥

    // 目标地址:支持 Base58 或 0x 十六进制 32 字节
    let to = "<Base58 地址或 0x + 64 hex>"; // 替换为收款地址

    match transfer_sol(rpc_url, secret, to, 0.001) {
        Ok(sig) => println!("交易成功,签名: {}", sig),
        Err(e) => eprintln!("交易失败: {}", e),
    }
}

行为说明

  • 构造 system_instruction::transfer 指令并以私钥签名,向 to_address 转出指定 SOL。
  • 通过 get_latest_blockhash 获取最新区块哈希,构造并提交交易。
  • 返回交易签名(Base58)。

注意事项

  • 钱包与私钥安全:请勿在非安全环境中暴露私钥;建议仅在测试网(devnet/testnet)尝试。
  • 数量单位:传入金额为 SOL;内部将按 LAMPORTS_PER_SOL 换算。
  • 私钥格式:支持 Keypair(64字节) 或 32 字节种子(将派生 Keypair)。
  • 费用与余额:需确保账户有足够余额支付转账金额与网络费用。

许可证

MIT © 2025 useful-cargo-packages

Commit count: 0

cargo fmt