web3-ethereum-1.0.0.0: Ethereum support for Haskell Web3 library.
CopyrightAleksandr Krupenkin 2016-2021
LicenseApache-2.0
Maintainermail@akru.me
Stabilityexperimental
Portabilityunportable
Safe HaskellNone
LanguageHaskell2010

Network.Ethereum.Account

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.

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

Instances details
Account () DefaultAccount Source # 
Instance details

Defined in Network.Ethereum.Account.Default

Methods

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

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

call :: forall (m :: Type -> Type) args result. (JsonRpc m, Method args, AbiGet result) => args -> DefaultAccount 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 :: forall (m :: Type -> Type) args. (JsonRpc m, Method args) => args -> PersonalAccount m TxReceipt Source #

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

Account LocalKey LocalKeyAccount Source # 
Instance details

Defined in Network.Ethereum.Account.LocalKey

Methods

withAccount :: JsonRpc m => LocalKey -> LocalKeyAccount m b -> m b Source #

send :: forall (m :: Type -> Type) args. (JsonRpc m, Method args) => args -> LocalKeyAccount m TxReceipt Source #

call :: forall (m :: Type -> Type) args result. (JsonRpc m, Method args, AbiGet result) => args -> LocalKeyAccount m result Source #

Default node account

Unlockable node account

data Personal Source #

Unlockable node managed account params

Instances

Instances details
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 :: forall (m :: Type -> Type) args. (JsonRpc m, Method args) => args -> PersonalAccount m TxReceipt Source #

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

Local key account

data LocalKey Source #

Local EOA params

Instances

Instances details
Eq LocalKey Source # 
Instance details

Defined in Network.Ethereum.Account.LocalKey

Show LocalKey Source # 
Instance details

Defined in Network.Ethereum.Account.LocalKey

Default LocalKey Source # 
Instance details

Defined in Network.Ethereum.Account.LocalKey

Methods

def :: LocalKey #

Account LocalKey LocalKeyAccount Source # 
Instance details

Defined in Network.Ethereum.Account.LocalKey

Methods

withAccount :: JsonRpc m => LocalKey -> LocalKeyAccount m b -> m b Source #

send :: forall (m :: Type -> Type) args. (JsonRpc m, Method args) => args -> LocalKeyAccount m TxReceipt Source #

call :: forall (m :: Type -> Type) args result. (JsonRpc m, Method args, AbiGet result) => args -> LocalKeyAccount m result Source #

Transaction parameterization 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