Class BlockPolicy<T>
A default implementation of IBlockPolicy<T> interface.
Implements
Inherited Members
Namespace: Libplanet.Blockchain.Policies
Assembly: Libplanet.dll
Syntax
public class BlockPolicy<T> : IBlockPolicy<T> where T : IAction, new()
Type Parameters
Name | Description |
---|---|
T | An IAction type. It should match to Block<T>'s type parameter. |
Constructors
| Improve this Doc View SourceBlockPolicy(Int32, Int64, Int32)
Creates a BlockPolicy<T> with configuring BlockInterval in milliseconds, Libplanet.Blockchain.Policies.BlockPolicy`1.MinimumDifficulty and Libplanet.Blockchain.Policies.BlockPolicy`1.DifficultyBoundDivisor.
Declaration
public BlockPolicy(int blockIntervalMilliseconds = 5000, long minimumDifficulty = 1024L, int difficultyBoundDivisor = 128)
Parameters
Type | Name | Description |
---|---|---|
Int32 | blockIntervalMilliseconds | Configures BlockInterval in milliseconds. 5000 milliseconds by default. |
Int64 | minimumDifficulty | Configures Libplanet.Blockchain.Policies.BlockPolicy`1.MinimumDifficulty. 1024 by default. |
Int32 | difficultyBoundDivisor | Configures Libplanet.Blockchain.Policies.BlockPolicy`1.DifficultyBoundDivisor. 128 by default. |
BlockPolicy(TimeSpan, Int64, Int32)
Creates a BlockPolicy<T> with configuring BlockInterval, Libplanet.Blockchain.Policies.BlockPolicy`1.MinimumDifficulty and Libplanet.Blockchain.Policies.BlockPolicy`1.DifficultyBoundDivisor.
Declaration
public BlockPolicy(TimeSpan blockInterval, long minimumDifficulty, int difficultyBoundDivisor)
Parameters
Type | Name | Description |
---|---|---|
TimeSpan | blockInterval | Configures BlockInterval. |
Int64 | minimumDifficulty | Configures Libplanet.Blockchain.Policies.BlockPolicy`1.MinimumDifficulty. |
Int32 | difficultyBoundDivisor | Configures Libplanet.Blockchain.Policies.BlockPolicy`1.DifficultyBoundDivisor. |
Properties
| Improve this Doc View SourceBlockInterval
An appropriate interval between consecutive Block<T>s. It is usually from 20 to 30 seconds.
If a previous interval took longer than this GetNextBlockDifficulty(IReadOnlyList<Block<T>>) method raises the Difficulty. If it took shorter than this Difficulty is dropped.
Declaration
public TimeSpan BlockInterval { get; }
Property Value
Type | Description |
---|---|
TimeSpan |
Methods
| Improve this Doc View SourceGetNextBlockDifficulty(IReadOnlyList<Block<T>>)
Declaration
public long GetNextBlockDifficulty(IReadOnlyList<Block<T>> blocks)
Parameters
Type | Name | Description |
---|---|---|
IReadOnlyList<Block<T>> | blocks |
Returns
Type | Description |
---|---|
Int64 |
ValidateNextBlock(IReadOnlyList<Block<T>>, Block<T>)
Declaration
public InvalidBlockException ValidateNextBlock(IReadOnlyList<Block<T>> blocks, Block<T> nextBlock)
Parameters
Type | Name | Description |
---|---|---|
IReadOnlyList<Block<T>> | blocks | |
Block<T> | nextBlock |
Returns
Type | Description |
---|---|
InvalidBlockException |