Crates.io | fathom_web3 |
lib.rs | fathom_web3 |
version | 1.1.0 |
source | src |
created_at | 2022-09-23 09:59:36.886864 |
updated_at | 2022-10-24 15:29:01.374455 |
description | Ethereum JSON-RPC client. Fathom Edition |
homepage | https://github.com/Into-the-Fathom/rust-web3 |
repository | https://github.com/Into-the-Fathom/rust-web3 |
max_upload_size | |
id | 672374 |
size | 633,116 |
Ethereum JSON-RPC multi-transport client. Rust implementation of Web3.js library. Fathom Edition.
Documentation: crates.io
First, add this to your Cargo.toml
:
[dependencies]
fathom_web3 = "1.0.0"
#[tokio::main]
async fn main() -> fathom_web3::Result<()> {
let transport = fathom_web3::transports::Http::new("http://localhost:8545")?;
let web3 = fathom_web3::Web3::new(transport);
println!("Calling accounts.");
let mut accounts = web3.eth().accounts().await?;
println!("Accounts: {:?}", accounts);
accounts.push("00a329c0648769a73afac7f9381e08fb43dbea72".parse().unwrap());
println!("Calling balance.");
for account in accounts {
let balance = web3.eth().balance(account, None).await?;
println!("Balance of {:?}: {}", account, balance);
}
Ok(())
}
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.
Unpin
requirements. (#361)tokio
instead of async-std
for ws.rs
transport (issue with test).Into<X>
)debris/ethabi
)U256,H256,Address(H160)
Transaction
from Parity)TransactionReceipt
from Parity)RichBlock
from Parity)Work
from Parity)SyncStats
from Parity)eth_*
eth_*
eth_*
net_*
web3_*
personal_*
traces_*
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()
Currently, Windows does not support IPC, which is enabled in the library by default. To compile, you need to disable the IPC feature:
fathom_web3 = { version = "1.0.0", default-features = false, features = ["http"] }
On Linux, native-tls
is implemented using OpenSSL. To avoid that dependency
for HTTPS use the corresponding feature.
fathom_web3 = { version = "1.0.0", default-features = false, features = ["http-rustls-tls"] }
The library supports following features:
http
- Enables HTTP transport (requires tokio
runtime, because of hyper
).http-tls
- Enables TLS support via reqwest/default-tls
for HTTP transport (implies http
; default).http-native-tls
- Enables TLS support via reqwest/native-tls
for HTTP transport (implies http
).http-rustls-tls
- Enables TLS support via reqwest/rustls-tls
for HTTP transport (implies http
).ws-tokio
- Enables WS transport using tokio
runtime.ws-tls-tokio
- Enables TLS support for WS transport (implies ws-tokio
; default).ws-async-std
- Enables WS transport using async-std
runtime.ws-tls-async-std
- Enables TLS support for WS transport (implies ws-async-std
).ipc-tokio
- Enables IPC transport using tokio
runtime (default).signing
- Enable account namespace and local-signing support (default).eip-1193
- Enable EIP-1193 support.wasm
- Compile for WASM (make sure to disable default features).arbitrary_precision
- Enable arbitrary_precision
in serde_json
.