web3
Ethereum JSON-RPC multi-transport client. Rust implementation of Web3.js library.
Documentation: crates.io
Usage
First, add this to your Cargo.toml
:
[]
= "0.15.0"
Example
async
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.
Opt-out Features
http
- Enables HTTP transport (requirestokio
runtime, because ofhyper
).http-tls
- Enables TLS support for HTTP transport (implieshttp
).ws
- Enables WS transport.ws-tls
- Enables TLS support for WS transport (impliesws
).
Futures migration
- Get rid of parking_lot (replace with async-aware locks if really needed).
- Consider getting rid of
Unpin
requirements. (#361) - WebSockets: TLS support (#360)
- WebSockets: Reconnecting & Pings
- Consider using
tokio
instead ofasync-std
forws.rs
transport (issue with test). - Restore IPC Transport
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 = new;
web3..custom_method.wait.unwrap
Installation on Windows
Currently, Windows does not support IPC, which is enabled in the library by default. To compile, you need to disable the IPC feature:
web3 = { version = "0.14.0", default-features = false, features = ["http"] }
Cargo Features
The library supports following features:
http
- Enableshttp
transport.http-tls
- Enableshttp
over TLS (https
) transport support. Implieshttp
.ipc-tokio
- Enablesipc
transport (tokio
runtime). *NIX only!ws-tokio
- Enablesws
tranport (tokio
runtime).ws-tls-tokio
- Enableswss
tranport (tokio
runtime).ws-async-std
- Enablesws
tranport (async-std
runtime).ws-tls-async-std
- Enableswss
tranport (async-std
runtime).
By default http-tls
and ws-tls-tokio
are enabled.