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