# 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)。
## 安装
```bash
cargo add solan
```
或在 `Cargo.toml` 添加:
```toml
[dependencies]
solan = "0.1"
```
## 使用示例
```rust
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