61 个版本 (8 个稳定版)

1.4.0 2024年4月10日
1.3.0 2023年10月23日
1.2.3 2023年7月1日
0.7.0 2023年2月7日
0.1.14 2018年11月28日

#769 in 魔法豆

Download history 248/week @ 2024-04-25 264/week @ 2024-05-02 328/week @ 2024-05-09 400/week @ 2024-05-16 402/week @ 2024-05-23 457/week @ 2024-05-30 178/week @ 2024-06-06 129/week @ 2024-06-13 247/week @ 2024-06-20 317/week @ 2024-06-27 149/week @ 2024-07-04 255/week @ 2024-07-11 342/week @ 2024-07-18 432/week @ 2024-07-25 242/week @ 2024-08-01 334/week @ 2024-08-08

每月下载量1,406
用于 14 个crate(13个直接使用)

Apache-2.0

165KB
3.5K SLoC

简介

Clarity是一个用纯Rust编写的低级以太坊交易库。

功能

  • 支持任意端序,32/64位
  • 公钥/私钥处理
  • 交易签名和验证
  • 常见数据类型的ABI编码(请参阅abi::Token变体)

入门

以下是一个使用Clarity制作的Alice到Bob以太坊交易的示例

extern crate clarity;
use web30::client::Web3;

use clarity::{Address, Signature, Transaction, PrivateKey};
use std::time::Duration;


// A helper for filling the keys
let mut key_buf: [u8; 32] = rand::random();

let alices_key = PrivateKey::from_bytes(key_buf).unwrap();

key_buf = rand::random();
let bobs_key = PrivateKey::from_bytes(key_buf).unwrap();

// Create a new transaction
let tx = Transaction::Legacy {
    nonce: 0u32.into(),
    gas_price: 1_000_000_000u32.into(),
    gas_limit: 21_000u32.into(),
    to: bobs_key.to_address(),
    value: 100u32.into(),
    data: Vec::new(),
    signature: None, // Not signed. Yet.
};

let tx_signed: Transaction = tx.sign(&alices_key, None);
assert!(tx_signed.is_valid());

// You can always derive the sender from a signed transaction
let sender: Address = tx_signed.sender().unwrap();

// Send the locally assembled raw transaction over web3 (no need to trust another
// machine with your wallet or host a node locally).
const TIMEOUT: Duration = Duration::from_secs(1);
let web3 = Web3::new("https://127.0.0.1:8545", TIMEOUT);
let res = web3
    .eth_send_raw_transaction(tx_signed.to_bytes());
// res.await.unwrap()

依赖项

~8MB
~92K SLoC