Blockchain in C#/.NET for on-chain, decentralized gaming
LGPL-2.1 License
Bot releases are visible (Hide)
Released on July 30, 2024.
Published by github-actions[bot] 3 months ago
Released on July 23, 2024.
IBlockPolicy.BlockAction
property. [#3701]
IBlockPolicy.PolicyActionsRegistry
property. [#3701]
BlockPolicy
constructor now requires policyActionsRegistry
parameter instead of the blockAction
parameter. [#3701, #3748]
PolicyBlockActionGetter
delegate. [#3701, #3748]
ActionEvaluator
constructor requires PolicyActionsRegistry
parameter instead of the policyBlockActionGetter
parameter. [#3701, #3748]
IActionContext.BlockAction
property to IActionContext.IsPolicyAction
. [#3764]
Published by github-actions[bot] 3 months ago
Published by github-actions[bot] 3 months ago
Released on July 15, 2024.
Published by github-actions[bot] 3 months ago
Released on July 11, 2024.
ValidatorPower
field to VoteType
. [#3737, #3813]
ValidatorPower
property to IVoteMetadata
interface and its implementations. [#3737, #3813]
IBlockMetadata.EvidenceHash
property and the parameters required by the derived class's properties and constructors have been added. Affected classes are Block
, BlockContent
, BlockHeader
, BlockMetadata
, PreEvaluationBlockHeader
. [#3696]
IBlockContent.Evidence
property and the parameters required by the derived class's properties and constructors have been added. Affected classes are Block
, BlockContent
, BlockHeader
, PreEvaluationBlock
. [#3696]
IBlockPolicy.GetMaxEvidencePendingDuration
method. [#3696]
InvalidBlockEvidenceHashException
class. [#3696]
InvalidBlockEvidencePendingDurationException
class. [#3696]
EvidenceBase
abstract class. [#3696]
DuplicateVoteEvidence
class. [#3696]
DuplicateVoteException
class. [#3696]
EvidenceContext
class. [#3696]
EvidenceException
class. [#3696]
EvidenceId
class. [#3696]
IEvidenceContext
class. [#3696]
InvalidEvidenceException
class. [#3696]
EvidenceCompletion
class. [#3696]
IStore.IteratePendingEvidenceIds
. method. [#3696]
IStore.GetPendingEvidence
. method. [#3696]
IStore.GetCommittedEvidence
. method. [#3696]
IStore.PutPendingEvidence
. method. [#3696]
IStore.PutCommittedEvidence
. method. [#3696]
IStore.DeletePendingEvidence
. method. [#3696]
IStore.DeleteCommittedEvidence
. method. [#3696]
IStore.ContainsPendingEvidence
. method. [#3696]
IStore.ContainsCommittedEvidence
. method. [#3696]
BlockChain.GetPendingEvidence
. method. [#3696]
BlockChain.GetCommittedEvidence
. method. [#3696]
BlockChain.AddEvidence
. method. [#3696]
BlockChain.CommitEvidence
. method. [#3696]
BlockChain.IsEvidencePending
. method. [#3696]
BlockChain.IsEvidenceCommitted
. method. [#3696]
BlockChain.IsEvidenceExpired
. method. [#3696]
BlockChain.DeletePendingEvidence
. method. [#3696]
IActionContext.Evidence
. property. [#3696]
Swarm.BroadcastEvidence
. property. [#3696]
Context.CollectEvidenceExceptions
. property. [#3696]
The entire project is now defined by common properties in the Directory.Build.props
file. The Directory.Build.props file is located at the root and in the src, tools, test path.
The project structure and affected Directory.Build.props locations are shown below.
┌ Directory.Build.props
├ src
│ ├ Directory.Build.props
│ ├ Libplanet
│ ├ Libplanet.Action
│ ├ Libplanet.Common
│ ├ Libplanet.Crypto.Secp256k1
│ ├ Libplanet.Crypto
│ ├ Libplanet.Net
│ ├ Libplanet.RocksDBStore
│ ├ Libplanet.Store.Remote
│ ├ Libplanet.Store
│ ├ Libplanet.Stun
│ └ Libplanet.Types
├ test
│ ├ Directory.Build.props
│ ├ Libplanet.Action.Tests
│ ├ Libplanet.Analyzers.Tests
│ ├ Libplanet.Crypto.Secp256k1.Tests
│ ├ Libplanet.Explorer.Cocona.Tests
│ ├ Libplanet.Explorer.Tests
│ ├ Libplanet.Extensions.Cocona.Tests
│ ├ Libplanet.Mocks
│ ├ Libplanet.Net.Tests
│ ├ Libplanet.RocksDBStore.Tests
│ ├ Libplanet.Store.Remote.Tests
│ ├ Libplanet.Stun.Tests
│ └ Libplanet.Tests
└ tools
├ Directory.Build.props
├ Libplanet.Analyzers
├ Libplanet.Benchmarks
├ Libplanet.Explorer.Cocona
├ Libplanet.Explorer.Executable
├ Libplanet.Explorer
├ Libplanet.Extensions.Cocona
└ Libplanet.Tools
The default SDK version for the project has been bumped up to .NET 6.0. The list of supported SDKs is as follows
Support for
netstandard2.0
is coming to an end soon, please note that projects usingnetstandard2.0
will be deprecated.
The VersionPrefix
property has been moved from the src/Libplanet/Libplanet.csproj file to the Directory.Build.props
file.
Published by github-actions[bot] 4 months ago
Released on July 2, 2024.
BlockChain.DetermineGenesisStateRootHash()
has been removed. [#3811]
BlockChain.EvaluateGenesis()
has been removed. [#3811]
BlockChain.DetermineBlockStateRootHash()
has been removed. [#3811]
IBlockChainStates.GetWorldState(BlockHash?)
does not accept null parameter any more. [#3811]
BlockMetadata.CurrentProtocolVersion
to 8. [#3811]
BlockChain.EvaluateBlock()
accepts Block
instead of IPreEvaluationBlock
. [#3811]
BlockChain.ProposeGenesisBlock()
receives parameter HashDigest<SHA256>? stateRootHash
. [#3811]
BlockChain.ProposeGenesisBlock()
does not receive parameter IActionEvaluator actionEvaluator
any more. [#3811]
BlockChain.ProposeBlock()
receives parameter HashDigest<SHA256> stateRootHash
. [#3811]
Context()
to accept additional BlockCommit?
typed argument. Removed lastCommit
parameter from Context.Start()
. [#3833, #3845]
Context.Start()
to throw an InvalidOperationException
when Context
is not in a valid state. [#3846]
IConsensusMessageCommunicator
parameter from Context()
. [#3848, #3849]
Running
property to ConsensusContext
. [#3851]
Start()
method to ConsensusContext
. [#3851]
NewHeight()
to throw a NullReferenceException
if it is called while its internal BlockChain
is in an invalid state. [#3851]
Null
value from ConsensusStep
enum. [#3851]
BlockChain.DetermineNextBlockStateRootHash()
method. [#3811]
Published by github-actions[bot] 4 months ago
To be released.
BlockChain.DetermineGenesisStateRootHash()
has been removed. [#3811]
BlockChain.EvaluateGenesis()
has been removed. [#3811]
BlockChain.DetermineBlockStateRootHash()
has been removed. [#3811]
IBlockChainStates.GetWorldState(BlockHash?)
does not accept null parameter any more. [#3811]
BlockMetadata.CurrentProtocolVersion
to 8. [#3811]
BlockChain.EvaluateBlock()
accepts Block
instead of IPreEvaluationBlock
. [#3811]
BlockChain.ProposeGenesisBlock()
receives parameter HashDigest<SHA256>? stateRootHash
. [#3811]
BlockChain.ProposeGenesisBlock()
does not receive parameter IActionEvaluator actionEvaluator
any more. [#3811]
BlockChain.ProposeBlock()
receives parameter HashDigest<SHA256> stateRootHash
. [#3811]
BlockChain.GetNextWorldState()
and BlockChain.GetNextWorldState(BlockHash?)
methods. [[#3821]]
IStore.GetNextStateRootHash()
method. [#3811]
IStore.PutNextStateRootHash()
method. [#3811]
IStore.DeleteNextStateRootHash()
method. [#3811]
BlockChain.DetermineNextBlockStateRootHash()
method. [#3811]
BlockHeader.StateRootHash
now means state root hash calculated by BlockChain.DetermineNextBlockStateRootHash(previousBlockHash)
. [[#Sloth]]
IBlockChainStates.GetWorldState(BlockHash)
now means the IWorldState
before state transition from the Block
. [#3811]
Context.ProcessHeightOrRoundUponRules()
now appends block asynchronously, as a manner of fire-and-forget. [[#3808]]
Published by github-actions[bot] 4 months ago
To be released.
BlockChain.DetermineGenesisStateRootHash()
has been removed. [#3811]
BlockChain.EvaluateGenesis()
has been removed. [#3811]
BlockChain.DetermineBlockStateRootHash()
has been removed. [#3811]
IBlockChainStates.GetWorldState(BlockHash?)
does not accept null parameter any more. [#3811]
BlockMetadata.CurrentProtocolVersion
to 8. [#3811]
BlockChain.EvaluateBlock()
accepts Block
instead of IPreEvaluationBlock
. [#3811]
BlockChain.ProposeGenesisBlock()
receives parameter HashDigest<SHA256>? stateRootHash
. [#3811]
BlockChain.ProposeGenesisBlock()
does not receive parameter IActionEvaluator actionEvaluator
any more. [#3811]
BlockChain.ProposeBlock()
receives parameter HashDigest<SHA256> stateRootHash
. [#3811]
BlockChain.GetNextWorldState()
and BlockChain.GetNextWorldState(BlockHash?)
methods. [[#3821]]
IStore.GetNextStateRootHash()
method. [#3811]
IStore.PutNextStateRootHash()
method. [#3811]
IStore.DeleteNextStateRootHash()
method. [#3811]
BlockChain.DetermineNextBlockStateRootHash()
method. [#3811]
BlockHeader.StateRootHash
now means state root hash calculated by BlockChain.DetermineNextBlockStateRootHash(previousBlockHash)
. [[#Sloth]]
IBlockChainStates.GetWorldState(BlockHash)
now means the IWorldState
before state transition from the Block
. [#3811]
Context.ProcessHeightOrRoundUponRules()
now appends block asynchronously, as a manner of fire-and-forget. [[#3808]]
Published by github-actions[bot] 4 months ago
Released on June 11, 2024.
Published by github-actions[bot] 4 months ago
Released on June 10, 2024.
ProtocolVersion
field to BlockType
. [#3810]
Published by github-actions[bot] 5 months ago
Released on May 27, 2024.
Due to changes in #3789, a network ran with a prior version may not be compatible with this version. The native implementation of IActionEvaluator
, which is ActionEvaluator
, no longer supports evaluation of PoW Block
s. That is, it is no longer possible to reconstruct states with valid state root hashes purely from past Block
s that includes PoW Block
s.
ActionEvaluate.Evaluate()
to no longer accept IPreEvaluationBlock
with a protocol version less than BlockMetadata.PBFTProtocolVersion
. [#3789]
IActionEvaluate.Evaluate()
so that it may throw BlockProtocolVersionNotSupportedException
if its implementation is not able to handle IPreEvaluationBlock
with certain BlockMetadata.ProtocolVersion
s. [#3789]
nonce
parameter from BlockMetadata.DerivePreEvaluationHash()
and BlockMetadata.MakeCandidateData()
methods. [#3793, #3794]
difficultyBoundDivisor
parameter for the executable and removed Options.DifficultyBoundDivisor
property. [#3796]
balance
, totalSupply
, and validatorSet
queries to WorldStateType
. [#3792, #3798]
balance
, balances
, totalSupply
and validatorSet
query from AccountStateType
. [#3792, #3798]
totalSupply
query under StateQuery
to no longer throw an Exception
and return a zero amount instead. [#3799]
Published by github-actions[bot] 5 months ago
Released on May 27, 2024.
Published by github-actions[bot] 5 months ago
Released on May 14, 2024.
Due to changes in #3780 and #3783, a network ran with a prior version may not be compatible with this version. Regarding #3780, a network that ran with an IAction
that has used GetTotalSupply()
with its execution result dependent on its value may not be compatible. Regarding #3783, a network that ran with an IAction
that has either used MintAsset()
and BurnAsset()
with its execution result dependent on handling of a possible Exception
thrown by these methods may not be compatible.
BlockMetadata.CurrentProtocolVersion
from 6 to 7. [#3769]
IterateSubTrieValues(KeyBytes)
and IterateSubTrieNodes(KeyBytes)
methods to MerkleTrie
. [#3774]
BlockMetadata.CurrencyAccountProtocolVersion
. [#3775]
MockWorldState.ToModern()
and MockWorldState.SetTotalSupply()
methods. [#3778]
TotalSupplyNotTrackableException
class. [#3780]
IWorldState.GetTotalSupply()
no longer throws a TotalSupplyNotTrackableException
but returns a zero amount of corresponding FungibleAssetValue
. [#3780]
Exception
s that may be thrown by IWorld.MintAsset()
and IWorld.BurnAsset()
.CurrencyAccount
class. [#3779]
MockWorldState.SetBalance()
now automatically updates the total supply of the provided Currency
. [#3778]
Published by github-actions[bot] 6 months ago
Published by github-actions[bot] 6 months ago
Released on April 18, 2024.
Published by github-actions[bot] 6 months ago
Published by github-actions[bot] 6 months ago
Released on April 17, 2024.
IWorld.SetValidator()
extension method. Use IWorld.SetValidatorSet()
extension method instead. [#3735]
BlockMetadata.PoWProtocolVersion
to BlockMetadata.PBFTProtocolVersion
and BlockMetadata.LegacyStateVersion
to BlockMetadata.WorldStateProtocolVersion
while increasing each value by 1. [#3736]
TrieMetadata.Version
from BigInteger
to int
. [#3738]
TrieMetadata
to throw an ArgumentException
when trying to create an instance with an invalid version. [#3738]
IWorldState.Version
interface property. [#3739]
BlockMetadata.CurrentProtocolVersion
from 5 to 6. [#3741]
BlockMetadata.TransferFixProtocolVersion
, BlockMetadata.SignatureProtocolVersion
, and BlockMetadata.TransactionOrderingFixProtocolVersion
constants. [#3742]
ReservedAddresses.FungibleAssetAccount
. [#3745]
ReservedAddresses.ValidatorSetAccount
's value from 0x1000000000000000000000000000000000000002
to 0x100000000000000000000000000000000000001
. [#3745]
Published by github-actions[bot] 6 months ago
Released on April 8, 2024.
Due to changes in #3728, a network ran with a prior version may not be compatible with this version, specifically those that ran with IAction
s that has allowed negative balances through TransferAssets()
with allowNegativeBalance
as true
.
Txs
property of type IReadOnlyList<ITransaction>?
to IActionContext
. [#3713]
TotalFungibleAssets
property from IWorld
. [#3714]
GetBalance()
, GetTotalSupply()
, and GetValidatorSet()
of IWorldState
to extension methods. [#3715]
MintAsset()
, BurnAsset()
, TransferAsset()
, and SetValidator()
of IWorld
to extension methods. [#3715]
allowNegativeBalance
parameter from IWorld.TransferAsset()
extension method. [#3725, #3728]
journal
, indexCacheSize
, and flush
parameters from DefaultStore
's constructor. [#3729]
Published by github-actions[bot] 7 months ago
Released on March 22, 2024.
GetBalance()
and GetTotalSupply()
methods from IAccountState
to IWorldState
. [#3694, #3697]
MintAsset()
, BurnAsset()
, and TransferAsset()
methods from IAccount
to IWorld
. [#3694, #3697]
TotalSupplyDiff
, FungibleAssetValueDiff
, and ValidatorDiff
properties from AccountDiff
. [#3694, #3697]
Uncommitted
property and CommitAccount()
method from IWorldDelta
. [#3694, #3699]
GetValidatorSet()
from IAccountState
to IWorldState
. [#3702]
SetValidator()
from IAccount
to IWorld
. [#3702]
Libplanet.Mocks
project. [#3642]
Published by github-actions[bot] 8 months ago
Released on March 8, 2024.
BaseIndex
class and changed BlockSet
base class from BaseIndex<BlockHash, Block>
to IReadOnlyDictionary<BlockHash, Block>
. [#3686]
blocks
parameter type of Branch
class constructor from IEnumerable<(Block, BlockCommit)>
to IEnumerable<(Block, BlockCommit?)>
.AppProtocolVersion.Extra
field type from IValue
to IValue?
.extra
parameter type of AppProtocolVersion
class constructor from IValue
to IValue?
.extra
parameter type of AppProtocolVersion.Sign
method from IValue
to IValue?
.Libplanet.Store.Server.RemoteKeyValueService
[#3688]
Libplanet.Store.Client.RemoteKeyValueStore
[#3688]
ITrie.IterateNodes()
to greatly reduce the amount of memory used. [#3687]