web3-0.8.2.0: Ethereum API for Haskell

CopyrightAlexander Krupenkin 2018
LicenseBSD3
Maintainermail@akru.me
Stabilityexperimental
Portabilityunportable
Safe HaskellNone
LanguageHaskell2010

Network.Ethereum.Account

Contents

Description

In Etereun there are two types of accounts: * Externally owned account (EOAs): an account controlled by a private key, and if you own the private key associated with the EOA you have the ability to send ether and messages from it. * Contract: an account that has its own code, and is controlled by code.

This module exports different kinds of EOAs: default, node managed and local. Node managed accounts use Personal JSON-RPC API for signing transactions. Local account sign transaction locally and use sendRawTransaction method to export transaction to Ethereum network.

Synopsis

The Account type

class MonadTrans t => Account a t | t -> a where Source #

Account is needed for sending transactions to blockchain

Typically account is provided by node. In this case node manage accounts: encrypt and decrypt private keys, manipulate files etc. In other case web3 can derive account from private key and send to node already signed transactions.

Minimal complete definition

withAccount, send, call

Methods

withAccount Source #

Arguments

:: JsonRpc m 
=> a

Account params (like a password or private key)

-> t m b

Computation that use account for sending transactions

-> m b

Json-rpc monad

Run computation with given account credentials

send Source #

Arguments

:: (JsonRpc m, Method args) 
=> args

Contract method arguments

-> t m TxReceipt

Receipt of sended transaction

Send transaction to contract, like a write command

call Source #

Arguments

:: (JsonRpc m, Method args, AbiGet result) 
=> args

Contact method arguments

-> t m result

Decoded result of method call

Call constant method of contract, like a read command

Instances
Account () DefaultAccount Source # 
Instance details

Defined in Network.Ethereum.Account.Default

Methods

withAccount :: JsonRpc m => () -> DefaultAccount m b -> m b Source #

send :: (JsonRpc m, Method args) => args -> DefaultAccount m TxReceipt Source #

call :: (JsonRpc m, Method args, AbiGet result) => args -> DefaultAccount m result Source #

Account PrivateKey PrivateKeyAccount Source # 
Instance details

Defined in Network.Ethereum.Account.PrivateKey

Methods

withAccount :: JsonRpc m => PrivateKey -> PrivateKeyAccount m b -> m b Source #

send :: (JsonRpc m, Method args) => args -> PrivateKeyAccount m TxReceipt Source #

call :: (JsonRpc m, Method args, AbiGet result) => args -> PrivateKeyAccount m result Source #

Account Personal PersonalAccount Source # 
Instance details

Defined in Network.Ethereum.Account.Personal

Methods

withAccount :: JsonRpc m => Personal -> PersonalAccount m b -> m b Source #

send :: (JsonRpc m, Method args) => args -> PersonalAccount m TxReceipt Source #

call :: (JsonRpc m, Method args, AbiGet result) => args -> PersonalAccount m result Source #

Default node account

Unlockable node account

data Personal Source #

Unlockable node managed account params

Instances
Eq Personal Source # 
Instance details

Defined in Network.Ethereum.Account.Personal

Show Personal Source # 
Instance details

Defined in Network.Ethereum.Account.Personal

Default Personal Source # 
Instance details

Defined in Network.Ethereum.Account.Personal

Methods

def :: Personal #

Account Personal PersonalAccount Source # 
Instance details

Defined in Network.Ethereum.Account.Personal

Methods

withAccount :: JsonRpc m => Personal -> PersonalAccount m b -> m b Source #

send :: (JsonRpc m, Method args) => args -> PersonalAccount m TxReceipt Source #

call :: (JsonRpc m, Method args, AbiGet result) => args -> PersonalAccount m result Source #

Local key account

Transaction paramitrization function and lenses

withParam :: Account p (AccountT p) => (CallParam p -> CallParam p) -> AccountT p m a -> AccountT p m a Source #

withParam is very similar to withStateT function, it's used to set parameters of transaction locally and revert params after out of scope.

 withAccount () $
   withParam (to .~ tokenAddress) $
     transfer alice 42
 

to :: Lens' (CallParam p) Address Source #

Transaction recipient lens

value :: Unit value => Lens' (CallParam p) value Source #

Transaction value lens

gasLimit :: Lens' (CallParam p) Integer Source #

Transaction gas limit lens

gasPrice :: Unit gasprice => Lens' (CallParam p) gasprice Source #

Transaction gas price lens

block :: Lens' (CallParam p) DefaultBlock Source #

Call execution block lens

account :: Lens' (CallParam p) p Source #

EOA params lens