Web3 API for Haskell

This library implements Haskell API client for popular Web3 platforms.

Install

stack install web3

Usage

{-# 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.