Ethereum  PoC-8
The C++ Implementation of Ethereum
dev::eth::ClientTest Class Reference

#include <ClientTest.h>

Inheritance diagram for dev::eth::ClientTest:
dev::eth::Client dev::eth::ClientBase dev::Worker dev::eth::Interface

Public Member Functions

 ClientTest (ChainParams const &_params, int _networkID, p2p::Host &_host, std::shared_ptr< GasPricer > _gpForAdoption, boost::filesystem::path const &_dbPath=boost::filesystem::path(), WithExisting _forceAction=WithExisting::Trust, TransactionQueue::Limits const &_l=TransactionQueue::Limits{1024, 1024})
 Trivial forwarding constructor. More...
 
 ~ClientTest ()
 
void setChainParams (std::string const &_genesis)
 
bool mineBlocks (unsigned _count) noexcept
 
void modifyTimestamp (int64_t _timestamp)
 
void rewindToBlock (unsigned _number)
 
h256 importRawBlock (std::string const &_blockRLP)
 
bool completeSync ()
 
- Public Member Functions inherited from dev::eth::Client
 Client (ChainParams const &_params, int _networkID, p2p::Host &_host, std::shared_ptr< GasPricer > _gpForAdoption, boost::filesystem::path const &_dbPath=boost::filesystem::path(), boost::filesystem::path const &_snapshotPath=boost::filesystem::path(), 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
 
h256 submitTransaction (TransactionSkeleton const &_t, Secret const &_secret) override
 
h256 importTransaction (Transaction const &_t) override
 Imports the given transaction into the transaction queue. More...
 
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...
 
void flushTransactions () override
 Blocks until all pending transactions have been processed. More...
 
Transactions pending () const override
 Retrieve pending transactions. More...
 
ImportResult queueBlock (bytes const &_block, bool _isSafe=false)
 Queues a block for import. More...
 
u256 gasLimitRemaining () const override
 Get the remaining gas limit in this block. More...
 
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::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...
 
TransactionSkeleton populateTransactionWithDefaults (TransactionSkeleton const &_t) const override
 Populate the uninitialized fields in the supplied transaction with default values. More...
 
BlockQueue const & blockQueue () const
 Get the block queue. More...
 
OverlayDB const & stateDB () const
 Get the state database. 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...
 
Address author () const override
 Get the block author address. More...
 
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...
 
std::unique_ptr< StateImporterFacecreateStateImporter ()
 
std::unique_ptr< BlockChainImporterFacecreateBlockChainImporter ()
 
void executeInMainThread (std::function< void()> const &_function)
 Queues a function to be executed in the main thread (that owns the blockchain, etc). More...
 
Block block (h256 const &_block) const override
 
void startWorking ()
 should be called after the constructor of the most derived class finishes. More...
 
Handler< bytes const & > setOnBlockSealed (std::function< void(bytes const &)> _handler)
 Change the function that is called when a new block is sealed. More...
 
Handler< h256s const &, h256s const & > setOnChainChanged (std::function< void(h256s const &, h256s const &)> _handler)
 Change the function that is called when blockchain was changed. More...
 
std::tuple< h256, h256, h256getWork () override
 
virtual Block block (h256 const &_h) const=0
 
- Public Member Functions inherited from dev::eth::ClientBase
 ClientBase ()
 
virtual ~ClientBase ()
 
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
 
u256 balanceAt (Address _a, BlockNumber _block) const override
 
u256 countAt (Address _a, BlockNumber _block) const override
 
u256 stateAt (Address _a, u256 _l, BlockNumber _block) const override
 
h256 stateRootAt (Address _a, BlockNumber _block) const override
 
bytes codeAt (Address _a, BlockNumber _block) const override
 
h256 codeHashAt (Address _a, BlockNumber _block) const override
 
std::map< h256, std::pair< u256, u256 > > storageAt (Address _a, BlockNumber _block) const override
 
LocalisedLogEntries logs (unsigned _watchId) const override
 
LocalisedLogEntries logs (LogFilter const &_filter) const override
 
virtual void prependLogsFromBlock (LogFilter const &_filter, h256 const &_blockHash, BlockPolarity _polarity, LocalisedLogEntries &io_logs) const
 
unsigned installWatch (LogFilter const &_filter, Reaping _r=Reaping::Automatic) override
 Install, uninstall and query watches. More...
 
unsigned installWatch (h256 _filterId, Reaping _r=Reaping::Automatic) override
 
bool uninstallWatch (unsigned _watchId) override
 
LocalisedLogEntries peekWatch (unsigned _watchId) const override
 
LocalisedLogEntries checkWatch (unsigned _watchId) override
 
h256 hashFromNumber (BlockNumber _number) const override
 
BlockNumber numberFromHash (h256 _blockHash) const override
 
int compareBlockHashes (h256 _h1, h256 _h2) const override
 
BlockHeader blockInfo (h256 _hash) const override
 
BlockDetails blockDetails (h256 _hash) const override
 
Transaction transaction (h256 _transactionHash) const override
 
LocalisedTransaction localisedTransaction (h256 const &_transactionHash) const override
 
Transaction transaction (h256 _blockHash, unsigned _i) const override
 
LocalisedTransaction localisedTransaction (h256 const &_blockHash, unsigned _i) const override
 
TransactionReceipt transactionReceipt (h256 const &_transactionHash) const override
 
LocalisedTransactionReceipt localisedTransactionReceipt (h256 const &_transactionHash) const override
 
std::pair< h256, unsigned > transactionLocation (h256 const &_transactionHash) const override
 
Transactions transactions (h256 _blockHash) const override
 
Transactions transactions (BlockNumber _block) const override
 
TransactionHashes transactionHashes (h256 _blockHash) const override
 
BlockHeader uncle (h256 _blockHash, unsigned _i) const override
 
UncleHashes uncleHashes (h256 _blockHash) const override
 
unsigned transactionCount (h256 _blockHash) const override
 
unsigned transactionCount (BlockNumber _block) const override
 
unsigned uncleCount (h256 _blockHash) const override
 
unsigned number () const override
 
h256s pendingHashes () const override
 
BlockHeader pendingInfo () const override
 
BlockDetails pendingDetails () const override
 
EVMSchedule evmSchedule () const override
 
ImportResult injectBlock (bytes const &_block) override
 Injects the RLP-encoded block given by the _rlp into the block queue directly. More...
 
Addresses addresses (BlockNumber _block) const override
 
u256 gasLimitRemaining () const override
 Get the remaining gas limit in this block. More...
 
u256 gasBidPrice () const override
 
Address author () const override
 Get the block author. More...
 
bool isKnown (h256 const &_hash) const override
 
bool isKnown (BlockNumber _block) const override
 
bool isKnownTransaction (h256 const &_transactionHash) const override
 
bool isKnownTransaction (h256 const &_blockHash, unsigned _i) const override
 
void startSealing () override
 
void stopSealing () override
 
bool wouldSeal () const override
 Would we like to be sealing now? More...
 
SyncStatus syncStatus () const override
 Get some information on the block queue. More...
 
Block blockByNumber (BlockNumber _h) const
 
int chainId () const override
 Gets the chain id. More...
 
u256 balanceAt (Address _a) const
 
virtual u256 balanceAt (Address _a, BlockNumber _block) const=0
 
u256 countAt (Address _a) const
 
virtual u256 countAt (Address _a, BlockNumber _block) const=0
 
u256 stateAt (Address _a, u256 _l) const
 
virtual u256 stateAt (Address _a, u256 _l, BlockNumber _block) const=0
 
bytes codeAt (Address _a) const
 
virtual bytes codeAt (Address _a, BlockNumber _block) const=0
 
h256 codeHashAt (Address _a) const
 
virtual h256 codeHashAt (Address _a, BlockNumber _block) const=0
 
std::map< h256, std::pair< u256, u256 > > storageAt (Address _a) const
 
virtual std::map< h256, std::pair< u256, u256 > > storageAt (Address _a, BlockNumber _block) const=0
 
virtual Addresses addresses () const
 
virtual Addresses addresses (BlockNumber _block) const=0
 
- 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...
 
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)
 
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
 
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
 

Protected Attributes

unsigned const m_singleBlockMaxMiningTimeInSeconds = 5
 
- Protected Attributes inherited from dev::eth::Client
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...
 
TransactionQueue m_tq
 Maintains a list of incoming transactions not yet in a block on the blockchain. 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...
 
std::atomic< 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< EthereumCapabilitym_host
 
std::weak_ptr< WarpCapabilitym_warpHost
 
std::condition_variable m_signalled
 
Mutex x_signalled
 
Handler m_tqReady
 
Handler< h256 const & > m_tqReplaced
 
Handler m_bqReady
 
std::atomic< 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::atomic< bool > m_syncTransactionQueue = {false}
 
std::atomic< bool > m_syncBlockQueue = {false}
 
bytes m_extraData
 
Signal< bytes const & > m_onBlockSealed
 Called if we have sealed a new block. More...
 
Signal< h256s const &, h256s const & > m_onChainChanged
 Called when blockchain was changed. More...
 
Logger m_logger {createLogger(VerbosityInfo, "client")}
 
Logger m_loggerDetail {createLogger(VerbosityDebug, "client")}
 
- Protected Attributes inherited from dev::eth::ClientBase
Mutex x_filtersWatches
 } 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...
 
Logger m_loggerWatch {createLogger(VerbosityDebug, "watch")}
 
- Protected Attributes inherited from dev::eth::Interface
int m_default = PendingBlock
 

Additional Inherited Members

- Protected Member Functions inherited from dev::eth::Client
void init (p2p::Host &_extNet, boost::filesystem::path const &_dbPath, boost::filesystem::path const &_snapshotPath, WithExisting _forceAction, u256 _networkId)
 
BlockChainbc () override
 InterfaceStub methods. More...
 
BlockChain const & bc () const override
 
Block preSeal () const override
 
Block postSeal () const override
 
void prepareForTransaction () override
 
void appendFromNewPending (TransactionReceipt const &_receipt, h256Hash &io_changed, h256 _sha3)
 
void appendFromBlock (h256 const &_blockHash, BlockPolarity _polarity, h256Hash &io_changed)
 
void noteChanged (h256Hash const &_filters)
 
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 restartMining ()
 Update m_preSeal, m_working, m_postSeal blocks from the latest state of the chain. More...
 
void resetState ()
 Clear working state of transactions. More...
 
void onChainChanged (ImportRoute const &_ir)
 
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 ()
 
void checkWatchGarbage ()
 Does garbage collection on watches. More...
 
void tick ()
 Ticks various system-level objects. More...
 
void onBadBlock (Exception &_ex) const
 
void callQueuedFunctions ()
 Executes the pending functions in m_functionQueue. More...
 
bool shouldServeWork () const
 Is there an active and valid remote worker? More...
 
bool remoteActive () const
 
- 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
 
void terminate ()
 Blocks caller into worker thread has finished. More...
 

Detailed Description

Definition at line 36 of file ClientTest.h.

Constructor & Destructor Documentation

◆ ClientTest()

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

Trivial forwarding constructor.

Definition at line 45 of file ClientTest.cpp.

◆ ~ClientTest()

ClientTest::~ClientTest ( )

Definition at line 52 of file ClientTest.cpp.

Member Function Documentation

◆ completeSync()

bool ClientTest::completeSync ( )

Definition at line 136 of file ClientTest.cpp.

◆ importRawBlock()

h256 ClientTest::importRawBlock ( std::string const &  _blockRLP)

Definition at line 146 of file ClientTest.cpp.

◆ mineBlocks()

bool ClientTest::mineBlocks ( unsigned  _count)
noexcept

Definition at line 103 of file ClientTest.cpp.

◆ modifyTimestamp()

void ClientTest::modifyTimestamp ( int64_t  _timestamp)

Definition at line 76 of file ClientTest.cpp.

◆ rewindToBlock()

void dev::eth::ClientTest::rewindToBlock ( unsigned  _number)

◆ setChainParams()

void ClientTest::setChainParams ( std::string const &  _genesis)

Definition at line 58 of file ClientTest.cpp.

Member Data Documentation

◆ m_singleBlockMaxMiningTimeInSeconds

unsigned const dev::eth::ClientTest::m_singleBlockMaxMiningTimeInSeconds = 5
protected

Definition at line 55 of file ClientTest.h.


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