Libplanet changelog
Version 5.3.0
To be released.
Deprecated APIs
Backward-incompatible API changes
- Changed
BlockLocator.Create()
to take a singleBlockHash
. [#3913] - Changed
BlockLocator()
to throw anArgumentException
when the number of givenBlockHash
es is not 1. [#3913] - Removed
threshold
parameter fromBlockChain.GetBlockLocator()
. [#3913] - (Libplanet.Net) Removed
SwarmOptions.BranchpointThreshold
property. [#3913] - (Libplanet.Store) Removed unused
HashNode.Serialize()
method. [#3922, #3924] - (Libplanet.Net) Removed
Header
property and addedBlockExcerpt
property toBlockDemand
. [#3934]
Backward-incompatible network protocol changes
Backward-incompatible storage format changes
Added APIs
Behavioral changes
- Changed
BlockChain.FindBranchPoint()
to only check for the firstBlockHash
in a givenBlockLocator
. [#3913] - (Libplanet.Store) Optimized
HashNode.ToBencodex()
method. [#3922, #3924] - (Libplanet.Store) Optimized internal conversions to
KeyBytes
. [#3926] - (Libplanet.Net) Changed the reporting behavior for
BlockHashDownloadState
andBlockDownloadState
during preloading. These no longer report meaningful data and it is strongly advised not to rely on these to track the progress of preloading. [#3931]
Bug fixes
Dependencies
CLI tools
Version 5.2.2
Released on August 8, 2024.
- Ported changes from Libplanet 5.2.2 release. [#3915]
Version 5.2.1
Released on July 31, 2024.
- Ported changes from Libplanet 5.1.3 release. [#3902]
Version 5.2.0
Released on July 23, 2024.
Backward-incompatible API changes
- Removed
IBlockPolicy.BlockAction
property. [#3701] - Added
IBlockPolicy.PolicyActionsRegistry
property. [#3701] BlockPolicy
constructor now requirespolicyActionsRegistry
parameter instead of theblockAction
parameter. [#3701, #3748]- (Libplanet.Action) Removed
PolicyBlockActionGetter
delegate. [#3701, #3748] - (Libplanet.Action)
ActionEvaluator
constructor requiresPolicyActionsRegistry
parameter instead of thepolicyBlockActionGetter
parameter. [#3701, #3748] - (Libplanet.Action) Renamed
IActionContext.BlockAction
property toIActionContext.IsPolicyAction
. [#3764]
Added APIs
- (Libplanet.Store) Added
MerkleTrie.GenerateProof()
method. [#3870] - (Libplanet.Store) Added
MerkleTrie.ValidateProof()
method. [#3870] - (Libplanet.Action) Added
PolicyActionsRegistry
class. [#3748]
Version 5.1.3
Released on July 30, 2024.
- (Libplanet.Explorer) Removed code that was used in development. [#3898]
Version 5.1.2
Released on July 17, 2024.
- Fix an issue where currency does not work correctly in dotnet6. [#3880]
- Fix an issue where evidence queries cause errors in the explorer. [#3883]
Version 5.1.1
Released on July 15, 2024.
- Fixed an issue with the evidence hash changing depending on the version. [#3874]
Version 5.1.0
Released on July 11, 2024.
Backward-incompatible API changes
- (Libplanet.Explorer) Added
ValidatorPower
field toVoteType
. [#3737, #3813] - (Libplanet.Types) Added
ValidatorPower
property toIVoteMetadata
interface and its implementations. [#3737, #3813] - (Libplanet.Types) Added
IBlockMetadata.EvidenceHash
property and the parameters required by the derived class's properties and constructors have been added. Affected classes areBlock
,BlockContent
,BlockHeader
,BlockMetadata
,PreEvaluationBlockHeader
. [#3696] - (Libplanet.Types) Added
IBlockContent.Evidence
property and the parameters required by the derived class's properties and constructors have been added. Affected classes areBlock
,BlockContent
,BlockHeader
,PreEvaluationBlock
. [#3696] - (Libplanet) Added
IBlockPolicy.GetMaxEvidencePendingDuration
method. [#3696]
Added APIs
- (Libplanet.Types) Added
InvalidBlockEvidenceHashException
class. [#3696] - (Libplanet.Types) Added
InvalidBlockEvidencePendingDurationException
class. [#3696] - (Libplanet.Types) Added
EvidenceBase
abstract class. [#3696] - (Libplanet.Types) Added
DuplicateVoteEvidence
class. [#3696] - (Libplanet.Types) Added
DuplicateVoteException
class. [#3696] - (Libplanet.Types) Added
EvidenceContext
class. [#3696] - (Libplanet.Types) Added
EvidenceException
class. [#3696] - (Libplanet.Types) Added
EvidenceId
class. [#3696] - (Libplanet.Types) Added
IEvidenceContext
class. [#3696] - (Libplanet.Types) Added
InvalidEvidenceException
class. [#3696] - (Libplanet.Net) Added
EvidenceCompletion
class. [#3696] - (Libplanet.Store) Added
IStore.IteratePendingEvidenceIds
. method. [#3696] - (Libplanet.Store) Added
IStore.GetPendingEvidence
. method. [#3696] - (Libplanet.Store) Added
IStore.GetCommittedEvidence
. method. [#3696] - (Libplanet.Store) Added
IStore.PutPendingEvidence
. method. [#3696] - (Libplanet.Store) Added
IStore.PutCommittedEvidence
. method. [#3696] - (Libplanet.Store) Added
IStore.DeletePendingEvidence
. method. [#3696] - (Libplanet.Store) Added
IStore.DeleteCommittedEvidence
. method. [#3696] - (Libplanet.Store) Added
IStore.ContainsPendingEvidence
. method. [#3696] - (Libplanet.Store) Added
IStore.ContainsCommittedEvidence
. method. [#3696] - (Libplanet) Added
BlockChain.GetPendingEvidence
. method. [#3696] - (Libplanet) Added
BlockChain.GetCommittedEvidence
. method. [#3696] - (Libplanet) Added
BlockChain.AddEvidence
. method. [#3696] - (Libplanet) Added
BlockChain.CommitEvidence
. method. [#3696] - (Libplanet) Added
BlockChain.IsEvidencePending
. method. [#3696] - (Libplanet) Added
BlockChain.IsEvidenceCommitted
. method. [#3696] - (Libplanet) Added
BlockChain.IsEvidenceExpired
. method. [#3696] - (Libplanet) Added
BlockChain.DeletePendingEvidence
. method. [#3696] - (Libplanet.Action) Added
IActionContext.Evidence
. property. [#3696] - (Libplanet.Net) Added
Swarm.BroadcastEvidence
. property. [#3696] - (Libplanet.Net) Added
Context.CollectEvidenceExceptions
. property. [#3696]
Dependencies
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
- netstandard2.0
- netstandard2.1
- netcoreapp3.1
- net6.0"
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.
Version 5.0.0
Released on July 2, 2024.
Deprecated APIs
BlockChain.DetermineGenesisStateRootHash()
has been removed. [#3811]BlockChain.EvaluateGenesis()
has been removed. [#3811]BlockChain.DetermineBlockStateRootHash()
has been removed. [#3811]
Backward-incompatible API changes
- (Libplanet.Action)
IBlockChainStates.GetWorldState(BlockHash?)
does not accept null parameter any more. [#3811] - Bumped
BlockMetadata.CurrentProtocolVersion
to 8. [#3811] BlockChain.EvaluateBlock()
acceptsBlock
instead ofIPreEvaluationBlock
. [#3811]BlockChain.ProposeGenesisBlock()
receives parameterHashDigest<SHA256>? stateRootHash
. [#3811]BlockChain.ProposeGenesisBlock()
does not receive parameterIActionEvaluator actionEvaluator
any more. [#3811]BlockChain.ProposeBlock()
receives parameterHashDigest<SHA256> stateRootHash
. [#3811]- (Libplanet.Net) Changed
Context()
to accept additionalBlockCommit?
typed argument. RemovedlastCommit
parameter fromContext.Start()
. [#3833, #3845] - (Libplanet.Net) Changed
Context.Start()
to throw anInvalidOperationException
whenContext
is not in a valid state. [#3846] - (Libplanet.Net) Removed
IConsensusMessageCommunicator
parameter fromContext()
. [#3848, #3849] - (Libplanet.Net) Added
Running
property toConsensusContext
. [#3851] - (Libplanet.Net) Added
Start()
method toConsensusContext
. [#3851] - (Libplanet.Net) Changed
NewHeight()
to throw aNullReferenceException
if it is called while its internalBlockChain
is in an invalid state. [#3851] - (Libplanet.Net) Removed
Null
value fromConsensusStep
enum. [#3851]
Added APIs
- Added
BlockChain.DetermineNextBlockStateRootHash()
method. [#3811]
Behavioral changes
Context.ProcessHeightOrRoundUponRules()
now appends block asynchronously, as a manner of fire-and-forget. [#3808]BlockHeader.StateRootHash
now means state root hash calculated byBlockChain.DetermineNextBlockStateRootHash(previousBlockHash)
. [#3811]