Expand description
Proof of work consensus for Substrate.
To use this engine, you can need to have a struct that implements
PowAlgorithm
. After that, pass an instance of the struct, along
with other necessary client references to import_queue
to setup
the queue.
This library also comes with an async mining worker, which can be
started via the start_mining_worker
function. It returns a worker
handle together with a future. The future must be pulled. Through
the worker handle, you can pull the metadata needed to start the
mining process via MiningHandle::metadata
, and then do the actual
mining on a standalone thread. Finally, when a seal is found, call
MiningHandle::submit
to build the block.
The auxiliary storage for PoW engine only stores the total difficulty.
For other storage requirements for particular PoW algorithm (such as
the actual difficulty for each particular blocks), you can take a client
reference in your PowAlgorithm
implementation, and use a separate prefix
for the auxiliary storage. It is also possible to just use the runtime
as the storage, but it is not recommended as it won’t work well with light
clients.
Structs§
- Mining
Build - A build of mining, containing the metadata and the block proposal.
- Mining
Handle - Mining worker that exposes structs to query the current mining build and submit mined blocks.
- Mining
Metadata - Mining metadata. This is the information needed to start an actual mining loop.
- PowAux
- Auxiliary storage data for PoW.
- PowBlock
Import - A block importer for PoW.
- PowIntermediate
- Intermediate value passed to block importer.
- PowVerifier
- A verifier for PoW blocks.
Enums§
Constants§
- POW_
AUX_ PREFIX - Auxiliary storage prefix for PoW engine.
Statics§
- INTERMEDIATE_
KEY - Intermediate key for PoW engine.
Traits§
- PowAlgorithm
- Algorithm used for proof of work.
Functions§
- import_
queue - Import queue for PoW engine.
- start_
mining_ worker - Start the mining worker for PoW. This function provides the necessary helper functions that can be used to implement a miner. However, it does not do the CPU-intensive mining itself.
Type Aliases§
- PowImport
Queue - The PoW import queue type.