16 releases (9 breaking)

✓ Uses Rust 2018 edition

new 0.9.0 Jan 18, 2020
0.8.0 Jul 12, 2019
0.7.0 Jun 11, 2019
0.6.0 Mar 6, 2019
0.0.2 Dec 28, 2016

#3 in Cryptocurrencies

Download history 570/week @ 2019-10-07 581/week @ 2019-10-14 548/week @ 2019-10-21 589/week @ 2019-10-28 733/week @ 2019-11-04 614/week @ 2019-11-11 1017/week @ 2019-11-18 1398/week @ 2019-11-25 2670/week @ 2019-12-02 2718/week @ 2019-12-09 2022/week @ 2019-12-16 766/week @ 2019-12-23 1120/week @ 2019-12-30 2406/week @ 2020-01-06 2058/week @ 2020-01-13

6,197 downloads per month
Used in 16 crates (13 directly)

MIT license

340KB
8K SLoC

rust-web3

Ethereum JSON-RPC multi-transport client. Rust implementation of Web3.js library.

Build Status

Documentation

Usage

First, add this to your Cargo.toml:

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

Next, add this to your crate:

extern crate web3;

Examples

extern crate web3;

use web3::futures::Future;

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

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

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

If you want to deploy smart contracts you have written you can do something like this (make sure you have the solidity compiler installed):

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

The solidity compiler is generating the binary and abi code for the smart contracts in a directory called contracts and is being output to a directory called build.

For more see examples folder.

General

  • More flexible API (accept Into<X>)
  • Contract calls (ABI encoding; debris/ethabi)
  • Batch Requests

Transports

  • HTTP transport
  • IPC transport
  • WebSockets transport

Types

  • Types for U256,H256,Address(H160)
  • Index type (numeric, encoded to hex)
  • Transaction type (Transaction from Parity)
  • Transaction receipt type (TransactionReceipt from Parity)
  • Block type (RichBlock from Parity)
  • Work type (Work from Parity)
  • Syncing type (SyncStats from Parity)

APIs

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

Parity-specific APIs

  • Parity read-only: parity_*

  • Parity accounts: parity_* (partially implemented)

  • Parity set: parity_*

  • signer_*

  • Own APIs (Extendable)

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

Installation on Windows

Currently, Windows does not support IPC, which is enabled in the library by default. To complile, you need to disable IPC feature:

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

Dependencies

~5–7MB
~155K SLoC