Fabcoin Core
0.16.2
P2P Digital Currency
|
#include <EthashClient.h>
Public Member Functions | |
EthashClient (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}) | |
Trivial forwarding constructor. More... | |
Ethash * | ethash () const |
void | setShouldPrecomputeDAG (bool _precompute) |
Enable/disable precomputing of the DAG for next epoch. More... | |
bool | isMining () const |
Are we mining now? More... | |
u256 | hashrate () const |
The hashrate... More... | |
WorkingProgress | miningProgress () const |
Check the progress of the mining. More... | |
bool | shouldServeWork () const |
std::tuple< h256, h256, h256 > | getEthashWork () |
Update to the latest transactions and get hash of the current block to be mined minus the nonce (the 'work hash') and the difficulty to be met. More... | |
bool | submitEthashWork (h256 const &_mixHash, h64 const &_nonce) |
Submit the proof for the proof-of-work. More... | |
void | submitExternalHashrate (u256 const &_rate, h256 const &_id) |
Public Member Functions inherited from dev::eth::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}) | |
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< GasPricer > | gasPricer () 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... | |
SealEngineFace * | sealEngine () 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, Address > | submitTransaction (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, ExecutionResult > | estimateGas (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 | |
u256 | externalHashrate () const |
Protected Member Functions inherited from dev::eth::Client | |
void | init (p2p::Host *_extNet, std::string const &_dbPath, WithExisting _forceAction, u256 _networkId) |
Perform critical setup functions. More... | |
BlockChain & | bc () 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... | |
Worker & | operator= (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 | |
std::unordered_map< h256, std::pair< u256, std::chrono::steady_clock::time_point > > | m_externalRates |
SharedMutex | x_externalRates |
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... | |
std::shared_ptr< GasPricer > | m_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< EthereumHost > | m_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, InstalledFilter > | m_filters |
The dictionary of filters that are active. More... | |
std::unordered_map< h256, h256s > | m_specialFilters = std::unordered_map<h256, std::vector<h256>>{{PendingChangedFilter, {}}, {ChainChangedFilter, {}}} |
The dictionary of special filters and their additional data. More... | |
std::map< unsigned, ClientWatch > | m_watches |
Each and every watch - these reference a filter. More... | |
Protected Attributes inherited from dev::eth::Interface | |
int | m_default = PendingBlock |
Definition at line 36 of file EthashClient.h.
EthashClient::EthashClient | ( | 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} |
||
) |
Trivial forwarding constructor.
Definition at line 45 of file EthashClient.cpp.
Ethash * EthashClient::ethash | ( | ) | const |
Definition at line 60 of file EthashClient.cpp.
|
protected |
Update to the latest transactions and get hash of the current block to be mined minus the nonce (the 'work hash') and the difficulty to be met.
Definition at line 85 of file EthashClient.cpp.
u256 EthashClient::hashrate | ( | ) | const |
The hashrate...
Definition at line 77 of file EthashClient.cpp.
bool EthashClient::isMining | ( | ) | const |
Are we mining now?
Definition at line 65 of file EthashClient.cpp.
WorkingProgress EthashClient::miningProgress | ( | ) | const |
Check the progress of the mining.
Definition at line 70 of file EthashClient.cpp.
void EthashClient::setShouldPrecomputeDAG | ( | bool | _precompute | ) |
Enable/disable precomputing of the DAG for next epoch.
Definition at line 111 of file EthashClient.cpp.
|
inline |
Definition at line 65 of file EthashClient.h.
Submit the proof for the proof-of-work.
_s | A valid solution. |
Definition at line 105 of file EthashClient.cpp.
|
mutableprotected |
Definition at line 84 of file EthashClient.h.
|
mutableprotected |
Definition at line 85 of file EthashClient.h.