Show / Hide Table of Contents

Class BlockPolicy<T>

A default implementation of IBlockPolicy<T> interface.

Inheritance
Object
BlockPolicy<T>
Implements
IBlockPolicy<T>
Namespace: Libplanet.Blockchain.Policies
Assembly: Libplanet.dll
Syntax
public class BlockPolicy<T> : object, 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 Source

BlockPolicy(IAction, Int32, Int64, Int32, Predicate<Transaction<T>>)

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(IAction blockAction = null, int blockIntervalMilliseconds = 5000, long minimumDifficulty = null, int difficultyBoundDivisor = 128, Predicate<Transaction<T>> doesTransactionFollowPolicy = null)
Parameters
Type Name Description
IAction blockAction

A block action to execute and be rendered for every block.

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.

Predicate<Transaction<T>> doesTransactionFollowPolicy

A predicate that determines if the transaction follows the block policy.

| Improve this Doc View Source

BlockPolicy(IAction, TimeSpan, Int64, Int32, Predicate<Transaction<T>>)

Creates a BlockPolicy<T> with configuring BlockInterval, Libplanet.Blockchain.Policies.BlockPolicy`1.MinimumDifficulty and Libplanet.Blockchain.Policies.BlockPolicy`1.DifficultyBoundDivisor.

Declaration
public BlockPolicy(IAction blockAction, TimeSpan blockInterval, long minimumDifficulty, int difficultyBoundDivisor, Predicate<Transaction<T>> doesTransactionFollowPolicy = null)
Parameters
Type Name Description
IAction blockAction

A block action to execute and be rendered for every block.

TimeSpan blockInterval

Configures BlockInterval.

Int64 minimumDifficulty

Configures Libplanet.Blockchain.Policies.BlockPolicy`1.MinimumDifficulty.

Int32 difficultyBoundDivisor

Configures Libplanet.Blockchain.Policies.BlockPolicy`1.DifficultyBoundDivisor.

Predicate<Transaction<T>> doesTransactionFollowPolicy

A predicate that determines if the transaction follows the block policy.

Properties

| Improve this Doc View Source

BlockAction

Declaration
public IAction BlockAction { get; }
Property Value
Type Description
IAction
| Improve this Doc View Source

BlockInterval

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(BlockChain<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 Source

DoesTransactionFollowsPolicy(Transaction<T>)

Declaration
public bool DoesTransactionFollowsPolicy(Transaction<T> transaction)
Parameters
Type Name Description
Transaction<T> transaction
Returns
Type Description
Boolean
| Improve this Doc View Source

GetNextBlockDifficulty(BlockChain<T>)

Declaration
public long GetNextBlockDifficulty(BlockChain<T> blocks)
Parameters
Type Name Description
BlockChain<T> blocks
Returns
Type Description
Int64
| Improve this Doc View Source

ValidateNextBlock(BlockChain<T>, Block<T>)

Declaration
public InvalidBlockException ValidateNextBlock(BlockChain<T> blocks, Block<T> nextBlock)
Parameters
Type Name Description
BlockChain<T> blocks
Block<T> nextBlock
Returns
Type Description
InvalidBlockException

Implements

IBlockPolicy<T>
  • Improve this Doc
  • View Source
Back to top Copyright © 2019–2020 Planetarium