Fabcoin Core  0.16.2
P2P Digital Currency
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
dev::eth::Client Class Reference

Main API hub for interfacing with Ethereum. More...

#include <Client.h>

Inheritance diagram for dev::eth::Client:
[legend]
Collaboration diagram for dev::eth::Client:
[legend]

Public Member Functions

 Client (ChainParams const &_params, int _networkID, p2p::Host *_host, std::shared_ptr< GasPricer > _gpForAdoption, std::string const &_dbPath=std::string(), WithExisting _forceAction=WithExisting::Trust, TransactionQueue::Limits const &_l=TransactionQueue::Limits{1024, 1024})
 
virtual ~Client ()
 Destructor. More...
 
ChainParams const & chainParams () const
 Get information on this chain. More...
 
void setGasPricer (std::shared_ptr< GasPricer > _gp)
 Resets the gas pricer to some other object. More...
 
std::shared_ptr< GasPricergasPricer () const
 
virtual void flushTransactions () override
 Blocks until all pending transactions have been processed. More...
 
ImportResult queueBlock (bytes const &_block, bool _isSafe=false)
 Queues a block for import. More...
 
ExecutionResult call (Address _dest, bytes const &_data=bytes(), u256 _gas=125000, u256 _value=0, u256 _gasPrice=1 *ether, Address const &_from=Address())
 Makes the given call. Nothing is recorded into the state. This cheats by creating a null address and endowing it with a lot of ETH. More...
 
virtual u256 gasLimitRemaining () const override
 Get the remaining gas limit in this block. More...
 
virtual u256 gasBidPrice () const override
 Get the gas bid price. More...
 
dev::eth::Block block (h256 const &_blockHash, PopulationStatistics *o_stats) const
 Get the block. More...
 
dev::eth::State state (unsigned _txi, h256 const &_block) const
 Get the state of the given block part way through execution, immediately before transaction index _txi. More...
 
dev::eth::State state (unsigned _txi) const
 Get the state of the currently pending block part way through execution, immediately before transaction index _txi. More...
 
dev::eth::Block postState () const
 Get the object representing the current state of Ethereum. More...
 
BlockChain const & blockChain () const
 Get the object representing the current canonical blockchain. More...
 
BlockQueueStatus blockQueueStatus () const
 Get some information on the block queue. More...
 
SyncStatus syncStatus () const override
 Get some information on the block syncing. More...
 
BlockQueue const & blockQueue () const
 Get the block queue. More...
 
OverlayDB const & stateDB () const
 Get the block queue. More...
 
TransactionQueue::Status transactionQueueStatus () const
 Get some information on the transaction queue. More...
 
TransactionQueue::Limits transactionQueueLimits () const
 
std::tuple< ImportRoute, bool, unsigned > syncQueue (unsigned _max=1)
 Freeze worker thread and sync some of the block queue. More...
 
virtual Address author () const override
 Get the block author. More...
 
virtual void setAuthor (Address const &_us) override
 Set the block author address. More...
 
strings sealers () const
 Type of sealers available for this seal engine. More...
 
std::string sealer () const
 Current sealer in use. More...
 
void setSealer (std::string const &_id)
 Change sealer. More...
 
bytes sealOption (std::string const &_name) const
 Review option for the sealer. More...
 
bool setSealOption (std::string const &_name, bytes const &_value)
 Set option for the sealer. More...
 
void startSealing () override
 Start sealing. More...
 
void stopSealing () override
 Stop sealing. More...
 
bool wouldSeal () const override
 Are we sealing now? More...
 
bool isSyncing () const override
 Are we updating the chain (syncing or importing a new block)? More...
 
bool isMajorSyncing () const override
 Are we syncing the chain? More...
 
u256 networkId () const override
 Gets the network id. More...
 
void setNetworkId (u256 const &_n) override
 Sets the network id. More...
 
SealEngineFacesealEngine () const override
 Get the seal engine. More...
 
DownloadMan const * downloadMan () const
 
void clearPending ()
 Clears pending transactions. Just for debug use. More...
 
void killChain ()
 Kills the blockchain. Just for debug use. More...
 
void reopenChain (ChainParams const &_p, WithExisting _we=WithExisting::Trust)
 Reloads the blockchain. Just for debug use. More...
 
void reopenChain (WithExisting _we)
 
void retryUnknown ()
 Retries all blocks with unknown parents. More...
 
ActivityReport activityReport ()
 Get a report of activity. More...
 
void setExtraData (bytes const &_extraData)
 Set the extra data that goes into sealed blocks. More...
 
void rewind (unsigned _n)
 Rewind to a prior head. More...
 
void rescue ()
 Rescue the chain. More...
 
void executeInMainThread (std::function< void()> const &_function)
 Queues a function to be executed in the main thread (that owns the blockchain, etc). More...
 
virtual Block block (h256 const &_block) const override
 
- Public Member Functions inherited from dev::eth::ClientBase
 ClientBase (TransactionQueue::Limits const &_l=TransactionQueue::Limits{1024, 1024})
 
virtual ~ClientBase ()
 
virtual std::pair< h256, AddresssubmitTransaction (TransactionSkeleton const &_t, Secret const &_secret) override
 Submits the given transaction. More...
 
virtual ExecutionResult call (Address const &_secret, u256 _value, Address _dest, bytes const &_data, u256 _gas, u256 _gasPrice, BlockNumber _blockNumber, FudgeFactor _ff=FudgeFactor::Strict) override
 Makes the given call. Nothing is recorded into the state. More...
 
virtual ExecutionResult create (Address const &_secret, u256 _value, bytes const &_data, u256 _gas, u256 _gasPrice, BlockNumber _blockNumber, FudgeFactor _ff=FudgeFactor::Strict) override
 Makes the given create. Nothing is recorded into the state. More...
 
virtual std::pair< u256, ExecutionResultestimateGas (Address const &_from, u256 _value, Address _dest, bytes const &_data, int64_t _maxGas, u256 _gasPrice, BlockNumber _blockNumber, GasEstimationCallback const &_callback) override
 Estimate gas usage for call/create. More...
 
virtual u256 balanceAt (Address _a, BlockNumber _block) const override
 
virtual u256 countAt (Address _a, BlockNumber _block) const override
 
virtual u256 stateAt (Address _a, u256 _l, BlockNumber _block) const override
 
virtual h256 stateRootAt (Address _a, BlockNumber _block) const override
 
virtual bytes codeAt (Address _a, BlockNumber _block) const override
 
virtual h256 codeHashAt (Address _a, BlockNumber _block) const override
 
virtual std::map< h256, std::pair< u256, u256 > > storageAt (Address _a, BlockNumber _block) const override
 
virtual LocalisedLogEntries logs (unsigned _watchId) const override
 
virtual LocalisedLogEntries logs (LogFilter const &_filter) const override
 
virtual void prependLogsFromBlock (LogFilter const &_filter, h256 const &_blockHash, BlockPolarity _polarity, LocalisedLogEntries &io_logs) const
 
virtual unsigned installWatch (LogFilter const &_filter, Reaping _r=Reaping::Automatic) override
 Install, uninstall and query watches. More...
 
virtual unsigned installWatch (h256 _filterId, Reaping _r=Reaping::Automatic) override
 
virtual bool uninstallWatch (unsigned _watchId) override
 
virtual LocalisedLogEntries peekWatch (unsigned _watchId) const override
 
virtual LocalisedLogEntries checkWatch (unsigned _watchId) override
 
virtual h256 hashFromNumber (BlockNumber _number) const override
 
virtual BlockNumber numberFromHash (h256 _blockHash) const override
 
virtual int compareBlockHashes (h256 _h1, h256 _h2) const override
 
virtual BlockHeader blockInfo (h256 _hash) const override
 
virtual BlockDetails blockDetails (h256 _hash) const override
 
virtual Transaction transaction (h256 _transactionHash) const override
 
virtual LocalisedTransaction localisedTransaction (h256 const &_transactionHash) const override
 
virtual Transaction transaction (h256 _blockHash, unsigned _i) const override
 
virtual LocalisedTransaction localisedTransaction (h256 const &_blockHash, unsigned _i) const override
 
virtual TransactionReceipt transactionReceipt (h256 const &_transactionHash) const override
 
virtual LocalisedTransactionReceipt localisedTransactionReceipt (h256 const &_transactionHash) const override
 
virtual std::pair< h256, unsigned > transactionLocation (h256 const &_transactionHash) const override
 
virtual Transactions transactions (h256 _blockHash) const override
 
virtual TransactionHashes transactionHashes (h256 _blockHash) const override
 
virtual BlockHeader uncle (h256 _blockHash, unsigned _i) const override
 
virtual UncleHashes uncleHashes (h256 _blockHash) const override
 
virtual unsigned transactionCount (h256 _blockHash) const override
 
virtual unsigned uncleCount (h256 _blockHash) const override
 
virtual unsigned number () const override
 
virtual Transactions pending () const override
 Get a map containing each of the pending transactions. More...
 
virtual h256s pendingHashes () const override
 
virtual BlockHeader pendingInfo () const override
 
virtual BlockDetails pendingDetails () const override
 
virtual EVMSchedule evmSchedule () const override
 
virtual ImportResult injectTransaction (bytes const &_rlp, IfDropped _id=IfDropped::Ignore) override
 Injects the RLP-encoded transaction given by the _rlp into the transaction queue directly. More...
 
virtual ImportResult injectBlock (bytes const &_block) override
 Injects the RLP-encoded block given by the _rlp into the block queue directly. More...
 
virtual Addresses addresses (BlockNumber _block) const override
 
virtual bool isKnown (h256 const &_hash) const override
 
virtual bool isKnown (BlockNumber _block) const override
 
virtual bool isKnownTransaction (h256 const &_transactionHash) const override
 
virtual bool isKnownTransaction (h256 const &_blockHash, unsigned _i) const override
 
Block block (BlockNumber _h) const
 
- Public Member Functions inherited from dev::eth::Interface
 Interface ()
 Constructor. More...
 
virtual ~Interface ()
 Destructor. More...
 
void submitTransaction (Secret const &_secret, u256 const &_value, Address const &_dest, bytes const &_data=bytes(), u256 const &_gas=1000000, u256 const &_gasPrice=DefaultGasPrice, u256 const &_nonce=Invalid256)
 Submits the given message-call transaction. More...
 
Address submitTransaction (Secret const &_secret, u256 const &_endowment, bytes const &_init, u256 const &_gas=1000000, u256 const &_gasPrice=DefaultGasPrice, u256 const &_nonce=Invalid256)
 Submits a new contract-creation transaction. More...
 
ExecutionResult call (Address const &_from, u256 _value, Address _dest, bytes const &_data=bytes(), u256 _gas=1000000, u256 _gasPrice=DefaultGasPrice, FudgeFactor _ff=FudgeFactor::Strict)
 
ExecutionResult call (Secret const &_secret, u256 _value, Address _dest, bytes const &_data, u256 _gas, u256 _gasPrice, BlockNumber _blockNumber, FudgeFactor _ff=FudgeFactor::Strict)
 
ExecutionResult call (Secret const &_secret, u256 _value, Address _dest, bytes const &_data, u256 _gas, u256 _gasPrice, FudgeFactor _ff=FudgeFactor::Strict)
 
ExecutionResult create (Address const &_from, u256 _value, bytes const &_data=bytes(), u256 _gas=1000000, u256 _gasPrice=DefaultGasPrice, FudgeFactor _ff=FudgeFactor::Strict)
 
ExecutionResult create (Secret const &_secret, u256 _value, bytes const &_data, u256 _gas, u256 _gasPrice, BlockNumber _blockNumber, FudgeFactor _ff=FudgeFactor::Strict)
 
ExecutionResult create (Secret const &_secret, u256 _value, bytes const &_data, u256 _gas, u256 _gasPrice, FudgeFactor _ff=FudgeFactor::Strict)
 
int getDefault () const
 
void setDefault (BlockNumber _block)
 
u256 balanceAt (Address _a) const
 
u256 countAt (Address _a) const
 
u256 stateAt (Address _a, u256 _l) const
 
bytes codeAt (Address _a) const
 
h256 codeHashAt (Address _a) const
 
std::map< h256, std::pair< u256, u256 > > storageAt (Address _a) const
 
LocalisedLogEntries peekWatchSafe (unsigned _watchId) const
 
LocalisedLogEntries checkWatchSafe (unsigned _watchId)
 
BlockHeader blockInfo (BlockNumber _block) const
 
BlockDetails blockDetails (BlockNumber _block) const
 
Transaction transaction (BlockNumber _block, unsigned _i) const
 
unsigned transactionCount (BlockNumber _block) const
 
Transactions transactions (BlockNumber _block) const
 
TransactionHashes transactionHashes (BlockNumber _block) const
 
BlockHeader uncle (BlockNumber _block, unsigned _i) const
 
UncleHashes uncleHashes (BlockNumber _block) const
 
unsigned uncleCount (BlockNumber _block) const
 
virtual Addresses addresses () const
 Get a list of all active addresses. More...
 

Protected Member Functions

void init (p2p::Host *_extNet, std::string const &_dbPath, WithExisting _forceAction, u256 _networkId)
 Perform critical setup functions. More...
 
BlockChainbc () override
 InterfaceStub methods. More...
 
BlockChain const & bc () const override
 
virtual Block preSeal () const override
 Returns the state object for the full block (i.e. More...
 
virtual Block postSeal () const override
 
virtual void prepareForTransaction () override
 
void appendFromNewPending (TransactionReceipt const &_receipt, h256Hash &io_changed, h256 _sha3)
 Collate the changed filters for the bloom filter of the given pending transaction. More...
 
void appendFromBlock (h256 const &_blockHash, BlockPolarity _polarity, h256Hash &io_changed)
 Collate the changed filters for the hash of the given block. More...
 
void noteChanged (h256Hash const &_filters)
 Record that the set of filters _filters have changed. More...
 
virtual bool submitSealed (bytes const &_s)
 Submit. More...
 
void startedWorking () override
 Called when Worker is starting. More...
 
void doWork (bool _doWait)
 Do some work. Handles blockchain maintenance and sealing. More...
 
void doWork () override
 Called continuously following sleep for m_idleWaitMs. More...
 
void doneWorking () override
 Called when Worker is exiting. More...
 
void rejigSealing ()
 Called when wouldSeal(), pendingTransactions() have changed. More...
 
void onDeadBlocks (h256s const &_blocks, h256Hash &io_changed)
 Called on chain changes. More...
 
virtual void onNewBlocks (h256s const &_blocks, h256Hash &io_changed)
 Called on chain changes. More...
 
void resyncStateFromChain ()
 Called after processing blocks by onChainChanged(_ir) More...
 
void resetState ()
 Clear working state of transactions. More...
 
void onChainChanged (ImportRoute const &_ir)
 Magically called when the chain has changed. More...
 
void syncBlockQueue ()
 Signal handler for when the block queue needs processing. More...
 
void syncTransactionQueue ()
 Signal handler for when the block queue needs processing. More...
 
void onTransactionQueueReady ()
 Magically called when m_tq needs syncing. Be nice and don't block. More...
 
void onBlockQueueReady ()
 Magically called when m_bq needs syncing. Be nice and don't block. More...
 
void onPostStateChanged ()
 Called when the post state has changed (i.e. More...
 
void checkWatchGarbage ()
 Does garbage collection on watches. More...
 
void tick ()
 Ticks various system-level objects. More...
 
void onBadBlock (Exception &_ex) const
 Called when we have attempted to import a bad block. More...
 
void callQueuedFunctions ()
 Executes the pending functions in m_functionQueue. More...
 
bool remoteActive () const
 Is there an active and valid remote worker? More...
 
- Protected Member Functions inherited from dev::Worker
 Worker (std::string const &_name="anon", unsigned _idleWaitMs=30)
 
 Worker (Worker &&_m)
 Move-constructor. More...
 
Workeroperator= (Worker &&_m)
 Move-assignment. More...
 
virtual ~Worker ()
 
void setName (std::string _n)
 Allows changing worker name if work is stopped. More...
 
void startWorking ()
 Starts worker thread; causes startedWorking() to be called. More...
 
void stopWorking ()
 Stop worker thread; causes call to stopWorking(). More...
 
bool isWorking () const
 Returns if worker thread is present. More...
 
virtual void workLoop ()
 Overrides doWork(); should call shouldStop() often and exit when true. More...
 
bool shouldStop () const
 

Protected Attributes

BlockChain m_bc
 Maintains block database and owns the seal engine. More...
 
BlockQueue m_bq
 Maintains a list of incoming blocks not yet on the blockchain (to be imported). More...
 
std::shared_ptr< GasPricerm_gp
 The gas pricer. More...
 
OverlayDB m_stateDB
 Acts as the central point for the state database, so multiple States can share it. More...
 
SharedMutex x_preSeal
 Lock on m_preSeal. More...
 
Block m_preSeal
 The present state of the client. More...
 
SharedMutex x_postSeal
 Lock on m_postSeal. More...
 
Block m_postSeal
 The state of the client which we're sealing (i.e. it'll have all the rewards added). More...
 
SharedMutex x_working
 Lock on m_working. More...
 
Block m_working
 The state of the client which we're sealing (i.e. it'll have all the rewards added), while we're actually working on it. More...
 
BlockHeader m_sealingInfo
 The header we're attempting to seal on (derived from m_postSeal). More...
 
bool m_remoteWorking = false
 Has the remote worker recently been reset? More...
 
std::atomic< bool > m_needStateReset = { false }
 Need reset working state to premin on next sync. More...
 
std::chrono::system_clock::time_point m_lastGetWork
 Is there an active and valid remote worker? More...
 
std::weak_ptr< EthereumHostm_host
 Our Ethereum Host. Don't do anything if we can't lock. More...
 
Handler m_tqReady
 
Handler< h256 const & > m_tqReplaced
 
Handler m_bqReady
 
bool m_wouldSeal = false
 True if we /should/ be sealing. More...
 
bool m_wouldButShouldnot = false
 True if the last time we called rejigSealing wouldSeal() was true but sealer's shouldSeal() was false. More...
 
std::chrono::system_clock::time_point m_lastGarbageCollection
 When did we last both doing GC on the watches? More...
 
std::chrono::system_clock::time_point m_lastTick = std::chrono::system_clock::now()
 When did we last tick()? More...
 
unsigned m_syncAmount = 50
 Number of blocks to sync in each go. More...
 
ActivityReport m_report
 
SharedMutex x_functionQueue
 
std::queue< std::function< void()> > m_functionQueue
 Functions waiting to be executed in the main thread. More...
 
std::condition_variable m_signalled
 
Mutex x_signalled
 
std::atomic< bool > m_syncTransactionQueue = {false}
 
std::atomic< bool > m_syncBlockQueue = {false}
 
bytes m_extraData
 
- Protected Attributes inherited from dev::eth::ClientBase
TransactionQueue m_tq
 } More...
 
Mutex x_filtersWatches
 Our lock. More...
 
std::unordered_map< h256, InstalledFilterm_filters
 The dictionary of filters that are active. More...
 
std::unordered_map< h256, h256sm_specialFilters = std::unordered_map<h256, std::vector<h256>>{{PendingChangedFilter, {}}, {ChainChangedFilter, {}}}
 The dictionary of special filters and their additional data. More...
 
std::map< unsigned, ClientWatchm_watches
 Each and every watch - these reference a filter. More...
 
- Protected Attributes inherited from dev::eth::Interface
int m_default = PendingBlock
 

Detailed Description

Main API hub for interfacing with Ethereum.

Definition at line 75 of file Client.h.

Constructor & Destructor Documentation

Client::Client ( ChainParams const &  _params,
int  _networkID,
p2p::Host _host,
std::shared_ptr< GasPricer _gpForAdoption,
std::string const &  _dbPath = std::string(),
WithExisting  _forceAction = WithExisting::Trust,
TransactionQueue::Limits const &  _l = TransactionQueue::Limits{1024, 1024} 
)

Definition at line 60 of file Client.cpp.

Here is the call graph for this function:

Client::~Client ( )
virtual

Destructor.

Definition at line 80 of file Client.cpp.

Here is the call graph for this function:

Member Function Documentation

ActivityReport dev::eth::Client::activityReport ( )
inline

Get a report of activity.

Definition at line 191 of file Client.h.

Here is the call graph for this function:

Here is the caller graph for this function:

void Client::appendFromBlock ( h256 const &  _blockHash,
BlockPolarity  _polarity,
h256Hash io_changed 
)
protected

Collate the changed filters for the hash of the given block.

Insert any filters that are activated into o_changed.

Definition at line 342 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void Client::appendFromNewPending ( TransactionReceipt const &  _receipt,
h256Hash io_changed,
h256  _sha3 
)
protected

Collate the changed filters for the bloom filter of the given pending transaction.

Insert any filters that are activated into o_changed.

Definition at line 323 of file Client.cpp.

Here is the caller graph for this function:

virtual Address dev::eth::Client::author ( ) const
inlineoverridevirtual

Get the block author.

Reimplemented from dev::eth::ClientBase.

Definition at line 144 of file Client.h.

Here is the caller graph for this function:

BlockChain& dev::eth::Client::bc ( )
inlineoverrideprotectedvirtual

InterfaceStub methods.

Implements dev::eth::ClientBase.

Definition at line 211 of file Client.h.

Here is the caller graph for this function:

BlockChain const& dev::eth::Client::bc ( ) const
inlineoverrideprotectedvirtual

Implements dev::eth::ClientBase.

Definition at line 212 of file Client.h.

Block Client::block ( h256 const &  _blockHash,
PopulationStatistics o_stats 
) const

Get the block.

Definition at line 760 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

Block Client::block ( h256 const &  _block) const
overridevirtual

Implements dev::eth::ClientBase.

Definition at line 744 of file Client.cpp.

Here is the call graph for this function:

BlockChain const& dev::eth::Client::blockChain ( ) const
inline

Get the object representing the current canonical blockchain.

Definition at line 125 of file Client.h.

Here is the caller graph for this function:

BlockQueue const& dev::eth::Client::blockQueue ( ) const
inline

Get the block queue.

Definition at line 131 of file Client.h.

Here is the caller graph for this function:

BlockQueueStatus dev::eth::Client::blockQueueStatus ( ) const
inline

Get some information on the block queue.

Definition at line 127 of file Client.h.

ExecutionResult Client::call ( Address  _dest,
bytes const &  _data = bytes(),
u256  _gas = 125000,
u256  _value = 0,
u256  _gasPrice = 1 * ether,
Address const &  _from = Address() 
)

Makes the given call. Nothing is recorded into the state. This cheats by creating a null address and endowing it with a lot of ETH.

Definition at line 369 of file Client.cpp.

Here is the call graph for this function:

void Client::callQueuedFunctions ( )
protected

Executes the pending functions in m_functionQueue.

Definition at line 154 of file Client.cpp.

Here is the caller graph for this function:

ChainParams const& dev::eth::Client::chainParams ( ) const
inline

Get information on this chain.

Definition at line 91 of file Client.h.

Here is the caller graph for this function:

void Client::checkWatchGarbage ( )
protected

Does garbage collection on watches.

Definition at line 716 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void Client::clearPending ( )

Clears pending transactions. Just for debug use.

Definition at line 288 of file Client.cpp.

Here is the call graph for this function:

void Client::doneWorking ( )
overrideprotectedvirtual

Called when Worker is exiting.

Reimplemented from dev::Worker.

Definition at line 219 of file Client.cpp.

Here is the call graph for this function:

DownloadMan const* dev::eth::Client::downloadMan ( ) const
void Client::doWork ( bool  _doWait)
protected

Do some work. Handles blockchain maintenance and sealing.

Definition at line 667 of file Client.cpp.

Here is the call graph for this function:

void dev::eth::Client::doWork ( )
inlineoverrideprotectedvirtual

Called continuously following sleep for m_idleWaitMs.

Reimplemented from dev::Worker.

Definition at line 241 of file Client.h.

Here is the call graph for this function:

Here is the caller graph for this function:

void Client::executeInMainThread ( std::function< void()> const &  _function)

Queues a function to be executed in the main thread (that owns the blockchain, etc).

Definition at line 281 of file Client.cpp.

Here is the caller graph for this function:

void Client::flushTransactions ( )
overridevirtual

Blocks until all pending transactions have been processed.

Implements dev::eth::Interface.

Definition at line 800 of file Client.cpp.

Here is the call graph for this function:

virtual u256 dev::eth::Client::gasBidPrice ( ) const
inlineoverridevirtual

Get the gas bid price.

Reimplemented from dev::eth::ClientBase.

Definition at line 110 of file Client.h.

Here is the caller graph for this function:

virtual u256 dev::eth::Client::gasLimitRemaining ( ) const
inlineoverridevirtual

Get the remaining gas limit in this block.

Reimplemented from dev::eth::ClientBase.

Definition at line 108 of file Client.h.

Here is the caller graph for this function:

std::shared_ptr<GasPricer> dev::eth::Client::gasPricer ( ) const
inline

Definition at line 95 of file Client.h.

Here is the call graph for this function:

void Client::init ( p2p::Host _extNet,
std::string const &  _dbPath,
WithExisting  _forceAction,
u256  _networkId 
)
protected

Perform critical setup functions.

Must be called in the constructor of the finally derived class.

Definition at line 85 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

bool Client::isMajorSyncing ( ) const
overridevirtual

Are we syncing the chain?

Reimplemented from dev::eth::Interface.

Definition at line 192 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

bool Client::isSyncing ( ) const
overridevirtual

Are we updating the chain (syncing or importing a new block)?

Reimplemented from dev::eth::Interface.

Definition at line 185 of file Client.cpp.

Here is the caller graph for this function:

void dev::eth::Client::killChain ( )
inline

Kills the blockchain. Just for debug use.

Definition at line 184 of file Client.h.

u256 Client::networkId ( ) const
overridevirtual

Gets the network id.

Reimplemented from dev::eth::Interface.

Definition at line 172 of file Client.cpp.

void Client::noteChanged ( h256Hash const &  _filters)
protected

Record that the set of filters _filters have changed.

This doesn't actually make any callbacks, but incrememnts some counters in m_watches.

Definition at line 639 of file Client.cpp.

Here is the caller graph for this function:

void Client::onBadBlock ( Exception _ex) const
protected

Called when we have attempted to import a bad block.

Warning
May be called from any thread.

Definition at line 140 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void dev::eth::Client::onBlockQueueReady ( )
inlineprotected

Magically called when m_bq needs syncing. Be nice and don't block.

Definition at line 275 of file Client.h.

Here is the caller graph for this function:

void Client::onChainChanged ( ImportRoute const &  _ir)
protected

Magically called when the chain has changed.

An import route is provided. Called by either submitWork() or in our main thread through syncBlockQueue().

Definition at line 556 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void Client::onDeadBlocks ( h256s const &  _blocks,
h256Hash io_changed 
)
protected

Called on chain changes.

Definition at line 466 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void Client::onNewBlocks ( h256s const &  _blocks,
h256Hash io_changed 
)
protectedvirtual

Called on chain changes.

Reimplemented in dev::eth::ClientTest.

Definition at line 484 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void Client::onPostStateChanged ( )
protected

Called when the post state has changed (i.e.

when more transactions are in it or we're sealing on a new block). This updates m_sealingInfo.

Definition at line 576 of file Client.cpp.

Here is the caller graph for this function:

void dev::eth::Client::onTransactionQueueReady ( )
inlineprotected

Magically called when m_tq needs syncing. Be nice and don't block.

Definition at line 272 of file Client.h.

Here is the caller graph for this function:

virtual Block dev::eth::Client::postSeal ( ) const
inlineoverrideprotectedvirtual

Implements dev::eth::ClientBase.

Definition at line 217 of file Client.h.

dev::eth::Block dev::eth::Client::postState ( ) const
inline

Get the object representing the current state of Ethereum.

Definition at line 123 of file Client.h.

void Client::prepareForTransaction ( )
overrideprotectedvirtual

Implements dev::eth::ClientBase.

Definition at line 739 of file Client.cpp.

Here is the call graph for this function:

virtual Block dev::eth::Client::preSeal ( ) const
inlineoverrideprotectedvirtual

Returns the state object for the full block (i.e.

the terminal state) for index _h. Works properly with LatestBlock and PendingBlock.

Implements dev::eth::ClientBase.

Definition at line 216 of file Client.h.

ImportResult Client::queueBlock ( bytes const &  _block,
bool  _isSafe = false 
)

Queues a block for import.

Definition at line 127 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void Client::rejigSealing ( )
protected

Called when wouldSeal(), pendingTransactions() have changed.

Definition at line 597 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

bool Client::remoteActive ( ) const
protected

Is there an active and valid remote worker?

Definition at line 571 of file Client.cpp.

Here is the caller graph for this function:

void Client::reopenChain ( ChainParams const &  _p,
WithExisting  _we = WithExisting::Trust 
)

Reloads the blockchain. Just for debug use.

Definition at line 239 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void Client::reopenChain ( WithExisting  _we)

Definition at line 234 of file Client.cpp.

Here is the call graph for this function:

void dev::eth::Client::rescue ( )
inline

Rescue the chain.

Definition at line 197 of file Client.h.

Here is the call graph for this function:

void Client::resetState ( )
protected

Clear working state of transactions.

Definition at line 541 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void Client::resyncStateFromChain ( )
protected

Called after processing blocks by onChainChanged(_ir)

Definition at line 497 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void dev::eth::Client::retryUnknown ( )
inline

Retries all blocks with unknown parents.

Definition at line 189 of file Client.h.

Here is the caller graph for this function:

void Client::rewind ( unsigned  _n)

Rewind to a prior head.

Definition at line 834 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

SealEngineFace* dev::eth::Client::sealEngine ( ) const
inlineoverridevirtual

Get the seal engine.

Reimplemented from dev::eth::Interface.

Definition at line 176 of file Client.h.

Here is the caller graph for this function:

std::string dev::eth::Client::sealer ( ) const
inline

Current sealer in use.

Definition at line 150 of file Client.h.

strings dev::eth::Client::sealers ( ) const
inline

Type of sealers available for this seal engine.

Definition at line 148 of file Client.h.

bytes dev::eth::Client::sealOption ( std::string const &  _name) const
inline

Review option for the sealer.

Definition at line 154 of file Client.h.

virtual void dev::eth::Client::setAuthor ( Address const &  _us)
inlineoverridevirtual

Set the block author address.

Implements dev::eth::Interface.

Definition at line 145 of file Client.h.

Here is the caller graph for this function:

void dev::eth::Client::setExtraData ( bytes const &  _extraData)
inline

Set the extra data that goes into sealed blocks.

Definition at line 193 of file Client.h.

Here is the caller graph for this function:

void dev::eth::Client::setGasPricer ( std::shared_ptr< GasPricer _gp)
inline

Resets the gas pricer to some other object.

Definition at line 94 of file Client.h.

Here is the caller graph for this function:

void Client::setNetworkId ( u256 const &  _n)
overridevirtual

Sets the network id.

Reimplemented from dev::eth::Interface.

Definition at line 179 of file Client.cpp.

void dev::eth::Client::setSealer ( std::string const &  _id)
inline

Change sealer.

Definition at line 152 of file Client.h.

bool dev::eth::Client::setSealOption ( std::string const &  _name,
bytes const &  _value 
)
inline

Set option for the sealer.

Definition at line 156 of file Client.h.

void Client::startedWorking ( )
overrideprotectedvirtual

Called when Worker is starting.

Reimplemented from dev::Worker.

Definition at line 202 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void Client::startSealing ( )
overridevirtual

Start sealing.

Reimplemented from dev::eth::ClientBase.

Definition at line 583 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

State Client::state ( unsigned  _txi,
h256 const &  _block 
) const

Get the state of the given block part way through execution, immediately before transaction index _txi.

Definition at line 778 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

eth::State Client::state ( unsigned  _txi) const

Get the state of the currently pending block part way through execution, immediately before transaction index _txi.

Definition at line 792 of file Client.cpp.

Here is the call graph for this function:

OverlayDB const& dev::eth::Client::stateDB ( ) const
inline

Get the block queue.

Definition at line 133 of file Client.h.

Here is the caller graph for this function:

void dev::eth::Client::stopSealing ( )
inlineoverridevirtual

Stop sealing.

Reimplemented from dev::eth::ClientBase.

Definition at line 161 of file Client.h.

Here is the caller graph for this function:

bool Client::submitSealed ( bytes const &  _s)
protectedvirtual

Submit.

Definition at line 815 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void Client::syncBlockQueue ( )
protected

Signal handler for when the block queue needs processing.

Definition at line 396 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

tuple< ImportRoute, bool, unsigned > Client::syncQueue ( unsigned  _max = 1)

Freeze worker thread and sync some of the block queue.

Definition at line 134 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

SyncStatus Client::syncStatus ( ) const
overridevirtual

Get some information on the block syncing.

Reimplemented from dev::eth::ClientBase.

Definition at line 805 of file Client.cpp.

Here is the call graph for this function:

void Client::syncTransactionQueue ( )
protected

Signal handler for when the block queue needs processing.

Definition at line 420 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void Client::tick ( )
protected

Ticks various system-level objects.

Definition at line 703 of file Client.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

TransactionQueue::Limits dev::eth::Client::transactionQueueLimits ( ) const
inline

Definition at line 136 of file Client.h.

TransactionQueue::Status dev::eth::Client::transactionQueueStatus ( ) const
inline

Get some information on the transaction queue.

Definition at line 135 of file Client.h.

bool dev::eth::Client::wouldSeal ( ) const
inlineoverridevirtual

Are we sealing now?

Reimplemented from dev::eth::ClientBase.

Definition at line 163 of file Client.h.

Here is the caller graph for this function:

Member Data Documentation

BlockChain dev::eth::Client::m_bc
protected

Maintains block database and owns the seal engine.

Definition at line 294 of file Client.h.

BlockQueue dev::eth::Client::m_bq
protected

Maintains a list of incoming blocks not yet on the blockchain (to be imported).

Definition at line 295 of file Client.h.

Handler dev::eth::Client::m_bqReady
protected

Definition at line 315 of file Client.h.

bytes dev::eth::Client::m_extraData
protected

Definition at line 337 of file Client.h.

std::queue<std::function<void()> > dev::eth::Client::m_functionQueue
protected

Functions waiting to be executed in the main thread.

Definition at line 330 of file Client.h.

std::shared_ptr<GasPricer> dev::eth::Client::m_gp
protected

The gas pricer.

Definition at line 296 of file Client.h.

std::weak_ptr<EthereumHost> dev::eth::Client::m_host
protected

Our Ethereum Host. Don't do anything if we can't lock.

Definition at line 311 of file Client.h.

std::chrono::system_clock::time_point dev::eth::Client::m_lastGarbageCollection
mutableprotected

When did we last both doing GC on the watches?

Definition at line 320 of file Client.h.

std::chrono::system_clock::time_point dev::eth::Client::m_lastGetWork
protected

Is there an active and valid remote worker?

Definition at line 309 of file Client.h.

std::chrono::system_clock::time_point dev::eth::Client::m_lastTick = std::chrono::system_clock::now()
mutableprotected

When did we last tick()?

Definition at line 322 of file Client.h.

std::atomic<bool> dev::eth::Client::m_needStateReset = { false }
protected

Need reset working state to premin on next sync.

Definition at line 308 of file Client.h.

Block dev::eth::Client::m_postSeal
protected

The state of the client which we're sealing (i.e. it'll have all the rewards added).

Definition at line 302 of file Client.h.

Block dev::eth::Client::m_preSeal
protected

The present state of the client.

Definition at line 300 of file Client.h.

bool dev::eth::Client::m_remoteWorking = false
protected

Has the remote worker recently been reset?

Definition at line 307 of file Client.h.

ActivityReport dev::eth::Client::m_report
protected

Definition at line 327 of file Client.h.

BlockHeader dev::eth::Client::m_sealingInfo
protected

The header we're attempting to seal on (derived from m_postSeal).

Definition at line 305 of file Client.h.

std::condition_variable dev::eth::Client::m_signalled
protected

Definition at line 332 of file Client.h.

OverlayDB dev::eth::Client::m_stateDB
protected

Acts as the central point for the state database, so multiple States can share it.

Definition at line 298 of file Client.h.

unsigned dev::eth::Client::m_syncAmount = 50
protected

Number of blocks to sync in each go.

Definition at line 325 of file Client.h.

std::atomic<bool> dev::eth::Client::m_syncBlockQueue = {false}
protected

Definition at line 335 of file Client.h.

std::atomic<bool> dev::eth::Client::m_syncTransactionQueue = {false}
protected

Definition at line 334 of file Client.h.

Handler dev::eth::Client::m_tqReady
protected

Definition at line 313 of file Client.h.

Handler<h256 const&> dev::eth::Client::m_tqReplaced
protected

Definition at line 314 of file Client.h.

Block dev::eth::Client::m_working
protected

The state of the client which we're sealing (i.e. it'll have all the rewards added), while we're actually working on it.

Definition at line 304 of file Client.h.

bool dev::eth::Client::m_wouldButShouldnot = false
protected

True if the last time we called rejigSealing wouldSeal() was true but sealer's shouldSeal() was false.

Definition at line 318 of file Client.h.

bool dev::eth::Client::m_wouldSeal = false
protected

True if we /should/ be sealing.

Definition at line 317 of file Client.h.

SharedMutex dev::eth::Client::x_functionQueue
protected

Definition at line 329 of file Client.h.

SharedMutex dev::eth::Client::x_postSeal
mutableprotected

Lock on m_postSeal.

Definition at line 301 of file Client.h.

SharedMutex dev::eth::Client::x_preSeal
mutableprotected

Lock on m_preSeal.

Definition at line 299 of file Client.h.

Mutex dev::eth::Client::x_signalled
protected

Definition at line 333 of file Client.h.

SharedMutex dev::eth::Client::x_working
mutableprotected

Lock on m_working.

Definition at line 303 of file Client.h.


The documentation for this class was generated from the following files: