BSD-3-Clause licensed  by Alexander Krupenkin 
This version can be pinned in stack with:web3-0.8.3.1@sha256:741d357ee3db48babf1d395f0e59843dd69c48d04c353802b7b613f62af6c3b4,14487
Module documentation for 0.8.3.1 
Crypto
 
DataData.ByteArray
 
Data.Solidity
 
Data.String
 
 
Language
 
NetworkNetwork.Ethereum
 
Network.JsonRpc
 
 
Depends on 28 packages
(full list with versions ) :
aeson , 
async , 
base , 
basement , 
bytestring , 
cereal , 
cryptonite , 
data-default , 
exceptions , 
generics-sop , 
http-client , 
http-client-tls , 
machines , 
memory , 
microlens , 
microlens-aeson , 
microlens-mtl , 
microlens-th , 
mtl , 
OneTuple , 
parsec , 
relapse , 
tagged , 
template-haskell , 
text , 
transformers , 
uuid-types , 
vinyl Ethereum API for Haskell 
The Haskell Ethereum API which implements the Generic JSON RPC .
Install 
stack install web3
Usage 
{-# LANGUAGE OverloadedStrings #-}
module Main where
-- Basic imports
import           Network.Ethereum.Web3
-- Eth API support
import qualified Network.Ethereum.Api.Eth   as Eth
import           Network.Ethereum.Api.Types
-- ENS support
import qualified Network.Ethereum.Ens       as Ens
-- Lens to simple param setting
import           Lens.Micro                 ((.~))
main :: IO ()
main = do
    -- Use default provider on http://localhost:8545
    ret <- runWeb3 $ do
        -- Get address of default account
        me <- head <$> Eth.accounts
        -- Get balance of default account on latest block
        myBalance <- Eth.getBalance me Latest
        -- Get half of balance
        let halfBalance = fromWei (myBalance / 2)
        -- Use default account
        withAccount () $ do
            -- Get Ethereum address via ENS
            alice <- Ens.resolve "alice.address.on.eth"
            bob   <- Ens.resolve "bob.address.on.eth"
            -- Send transaction with value
            withParam (value .~ halfBalance) $ do
                -- Send transaction to alice account
                withParam (to .~ alice) $ send ()
                -- Send transaction to bob account
                withParam (to .~ bob) $ send ()
        -- Return sended value
        return halfBalance
    -- Web3 error handling
    case ret of
        Left e  -> error $ show e
        Right v -> print (v :: Ether)  -- Print returned value in ethers
Read more in the documentation on ReadTheDocs .
Changelog 
All notable changes to this project will be documented in this file.
[0.8.3.0] 2019-01-09 
Added 
Web3 secret storage v3 support 
 
Changed 
Cryptonite based ECC signer for messages and transactions, it removes secp256k1 dependency 
Fixed dependencies bounds for stackage LTS-13 
 
[0.8.2.1] 2018-11-19 
Changed 
Fixed dependencies bounds for stackage distribution 
 
[0.8.2.0] 2018-11-07 
Changed 
Gas estimation runs when gas limit is not set before 
 
[0.8.1.0] 2018-10-29 
Added 
Support vinyl-0.10 in MultiFilter module 
 
[0.8.0.0] 2018-10-26 
Added 
Support for Ethereum cryptography 
Local private key transaction signer 
Generalized JSON-RPC monad for API methods 
Support for multiple transaction sending methods via one Account api 
Monad based transaction sending parametrization 
Experimental support for solidity compiler (disabled by default) 
Support for Ethereum mainnet ENS resolver 
Contract typeclass with api/bytecode getters 
Gas estimation for sending transactions 
Contract typeclass TH generator 
Function for creating contracts 
Event single/multi filters 
HexString data type 
Personal api calls 
Address checksum 
 
Changed 
package.yaml instead web3.cabal package descriptor 
Solidity related data types and codecs moved to Data.Solidity 
Solidity related parsers and compiler moved to Language.Solidity 
Modules in Network.Ethereum.Web3 moved to Network.Ethereum.Api 
fromWei/toWei from Unit typeclass now operates over Integral 
 
Removed 
convert function from Unit typeclass 
[0.7.3.0] 2018-05-22 
Added 
‘Network.Ethereum.ABI.Prim’ meta-module as primitive types and instances aggregator. 
Stackage nightly build compatibility. 
 
Changed 
Potential nullable web3 type (‘Change’, ‘Block’, ‘Transaction’, etc.) fields are encoded as ‘Maybe’. 
 
[0.7.2.0] 2018-05-13 
Added 
Generic JSON-RPC API documentation improvements. 
TH generator bug fixes. 
 
Changed 
Generic JSON-RPC API use fixed size byte arrays. 
 
Removed 
‘BlockNumber’, ‘FilterId’ types replaced by ‘Quantity’ type 
 
[0.7.1.0] 2018-05-02 
Added 
TxReceipt and Eth.getTransactionReceipt JSON-RPC method. 
Keyword escaper for TH generated names. 
Build flag to enable TLS support. 
 
Changed 
Library dependencies bounds fixed for GHC 8.2.2-8.4.2 (stackage LTS + Nightly). 
 
[0.7.0.0] 2018-04-22 
Added 
This CHANGELOG.md file for significant changes tracking. 
Descriptive types for all JSON-RPC method parameters and returned values (#15). 
Widely use of basement:Word256 type for encoding. 
Full list of ethereum abi encoding types:
bool: Bool 
int256: IntN 
uint256: UIntN 
string: Text 
bytes: Bytes 
bytes32: BytesN 
dynamic array: [] 
static array: ListN 
 
 
 
Changed 
Rewriten encoding engine for best performance, it now based on cereal:Serialize instead of parsec:Parser. 
Renamed encoding type classes and methods: ABIEncode -> ABIPut, ABIDecode -> ABIGet. 
Encoding related modules moved to Network.Ethereum.ABI. 
Primitive abi encoding types are moved to separated modules in Network.Ethereum.ABI.Prim. 
Contract interation related modules moved to Network.Ethereum.Contract. 
Ethereum node communication modules stay in Network.Ethereum.Web3. 
JSON-RPC tiny client is independent now and can be used separately. 
 
Removed 
Event type class, currently TH create Data.Default instance for Filter e.Custom setup for live testing (it replaced by travis script). 
 
Stackage is a service provided by the
Haskell Foundation 
│ Originally developed by
FP Complete