| Copyright | Alexander Krupenkin 2018 |
|---|---|
| License | BSD3 |
| Maintainer | mail@akru.me |
| Stability | experimental |
| Portability | unportable |
| Safe Haskell | None |
| Language | Haskell2010 |
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
- class MonadTrans t => Account a t | t -> a where
- type DefaultAccount = AccountT ()
- type PersonalAccount = AccountT Personal
- data Personal = Personal {}
- type LocalKeyAccount = AccountT LocalKey
- data LocalKey = LocalKey {}
- withParam :: Account p (AccountT p) => (CallParam p -> CallParam p) -> AccountT p m a -> AccountT p m a
- to :: Lens' (CallParam p) Address
- value :: Unit value => Lens' (CallParam p) value
- gasLimit :: Lens' (CallParam p) Integer
- gasPrice :: Unit gasprice => Lens' (CallParam p) gasprice
- block :: Lens' (CallParam p) DefaultBlock
- account :: Lens' (CallParam p) p
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
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
Arguments
| :: (JsonRpc m, Method args) | |
| => args | Contract method arguments |
| -> t m TxReceipt | Receipt of sended transaction |
Send transaction to contract, like a write command
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
Default node account
type DefaultAccount = AccountT () Source #
Unlockable node account
type PersonalAccount = AccountT Personal Source #
Unlockable node managed account params
Constructors
| Personal | |
Fields | |
Instances
| Eq Personal Source # | |
| Show Personal Source # | |
| Default Personal Source # | |
Defined in Network.Ethereum.Account.Personal | |
| Account Personal PersonalAccount Source # | |
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
type LocalKeyAccount = AccountT LocalKey Source #
Local EOA params
Constructors
| LocalKey | |
Fields | |
Instances
| Eq LocalKey Source # | |
| Show LocalKey Source # | |
| Default LocalKey Source # | |
Defined in Network.Ethereum.Account.LocalKey | |
| Account LocalKey LocalKeyAccount Source # | |
Defined in Network.Ethereum.Account.LocalKey Methods withAccount :: JsonRpc m => LocalKey -> LocalKeyAccount m b -> m b Source # send :: (JsonRpc m, Method args) => args -> LocalKeyAccount m TxReceipt Source # call :: (JsonRpc m, Method args, AbiGet result) => args -> LocalKeyAccount m result Source # | |
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