Interface IBlockPolicy<T>
An interface to determine if consecutive Block<T>s are valid, and to suggest how difficult a Nonce for a Block<T> to be mined.
Namespace: Libplanet.Blockchain.Policies
Assembly: Libplanet.dll
Syntax
public interface IBlockPolicy<T>
where T : IAction, new()
Type Parameters
Name | Description |
---|---|
T | An IAction type. It should match to Block<T>'s type parameter. |
Properties
| Improve this Doc View SourceBlockAction
A block action to execute and be rendered for every block.
Declaration
IAction BlockAction { get; }
Property Value
Type | Description |
---|---|
IAction |
Methods
| Improve this Doc View SourceDoesTransactionFollowsPolicy(Transaction<T>)
A predicate that determines if the transaction follows the block policy.
Declaration
bool DoesTransactionFollowsPolicy(Transaction<T> transaction)
Parameters
Type | Name | Description |
---|---|---|
Transaction<T> | transaction | A Transaction<T> to determine. |
Returns
Type | Description |
---|---|
Boolean |
|
GetNextBlockDifficulty(BlockChain<T>)
Determines a right Difficulty
for a new Block<T> to be mined
right after the given blocks
.
Declaration
long GetNextBlockDifficulty(BlockChain<T> blocks)
Parameters
Type | Name | Description |
---|---|---|
BlockChain<T> | blocks | Consecutive Block<T>s to be followed by a new Block<T> to be mined. |
Returns
Type | Description |
---|---|
Int64 | A right Difficulty for a new Block<T> to be mined. |
ValidateNextBlock(BlockChain<T>, Block<T>)
Checks if nextBlock
is invalid, and if that
returns the reason.
Note that it returns null
when
nextBlock
is valid.
Declaration
InvalidBlockException ValidateNextBlock(BlockChain<T> blocks, Block<T> nextBlock)
Parameters
Type | Name | Description |
---|---|---|
BlockChain<T> | blocks | Consecutive Block<T>s to
append |
Block<T> | nextBlock | The next block to append to
|
Returns
Type | Description |
---|---|
InvalidBlockException | The reason why the given |