2个不稳定版本

0.8.0 2019年8月1日
0.1.0 2019年8月10日

#51 in #json-rpc-client

MIT 许可证

305KB
7.5K SLoC

rust-web3

Ethereum JSON-RPC多传输客户端。Web3.js库的Rust实现。

Build Status

文档

用法

首先,将以下内容添加到您的 Cargo.toml

[dependencies]
web3 = { git = "https://github.com/tomusdrw/rust-web3" }

接下来,将以下内容添加到您的crate中

extern crate web3;

示例

extern crate web3;

use web3::futures::Future;

fn main() {
  let (_eloop, transport) = web3::transports::Http::new("https://127.0.0.1:8545").unwrap();

  let web3 = web3::Web3::new(transport);
  let accounts = web3.eth().accounts().wait().unwrap();

  println!("Accounts: {:?}", accounts);
}

如果您想部署您编写的智能合约,可以这样做(确保您已安装solidity编译器)

solc-o build--bin--abi contracts/*.sol

solidity编译器正在为名为contracts的目录中的智能合约生成二进制和abi代码,并将其输出到名为build的目录。

更多内容请参阅 示例文件夹.

通用

  • 更灵活的API(接受 Into<X>
  • 合约调用(ABI编码;debris/ethabi
  • 批量请求

传输

  • HTTP传输
  • IPC传输
  • WebSockets传输

类型

  • 类型用于 U256,H256,Address(H160)
  • 索引类型(数字,编码为十六进制)
  • 交易类型(来自Parity的Transaction
  • 交易收据类型(来自Parity的TransactionReceipt
  • 区块类型(来自Parity的RichBlock
  • 工作量类型(来自Parity的Work
  • 同步类型(来自Parity的SyncStats

APIs

  • Eth: eth_*
  • Eth filters: eth_*
  • Eth pubsub: eth_*
  • net_*
  • web3_*
  • personal_*
  • traces_*

Parity特定的API

  • Parity只读:parity_*

  • Parity账户:parity_*(部分实现)

  • Parity集合:parity_*

  • signer_*

  • 自建API(可扩展)

let web3 = Web3::new(transport);
web3.api::<CustomNamespace>().custom_method().wait().unwrap()

在Windows上安装

目前,Windows不支持IPC,该库默认启用。要编译,您需要禁用IPC功能

web3 = { version = "0.1.0", default-features = false, features = ["http"] }

依赖项

~7–20MB
~315K SLoC