Web3 API for Haskell ==================== This library implements Haskell API client for popular Web3 platforms. [](https://hs-web3.readthedocs.io/en/latest/?badge=latest) [](https://travis-ci.org/airalab/hs-web3) [](https://matrix.hackage.haskell.org/package/web3) [](http://hackage.haskell.org/package/web3) [](http://stackage.org/lts-14/package/web3) [](http://stackage.org/nightly/package/web3) [](https://www.codetriage.com/airalab/hs-web3)  Install ------- `stack install web3` Usage ----- ```haskell {-# LANGUAGE OverloadedStrings #-} module Main where -- Basic imports import Network.Ethereum import Network.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](https://hs-web3.readthedocs.io).