Libplanet changelog
Version 3.9.6
Released on January 26, 2024.
- (Libplanet.Store) Optimized
TrieStateStore.CopyStates()to greatly reduce the amount of memory used. [#3634]
Version 3.9.5
Released on January 18, 2024.
- (Libplanet.Store) Changed
IStateStore.Commit()to return anITriewith either itsRootasnullor aHashNode. [#3610] - (Libplanet.Store) Removed
IStateStore.PruneStates()method. [#3613, #3614]
Version 3.9.4
Released on January 11, 2024.
- (Libplanet.Explorer) Rolled back some changes to the API to be
more compatible with pre-3.9.3 API. [#3600]
- Changed the name
BencodexValueTypetoIValueType. - Changed the name
LegacyBencodexValueTypetoBencodexValueType. - Changed
AddressType.NamefromaddresstoAddress. - Changed
BlockHashType.NamefromblockHashtoBlockHash. - Changed
PublicKeyType.NamefrompublicKeytoPublicKey. - Changed
TxIdType.NamefromtxIdtoTxId.
- Changed the name
Version 3.9.3
Released on January 4, 2024.
Due to changes in #3567, a network ran with a prior version may not
be compatible with this version, specifically, those that ran with
Libplanet 2.0.0 and onwards prior to this release that have included
Transactions that aren't compatible with the updated specification in #3567.
- (Libplanet.Explorer) Added
BlockHashTypeandTxIdType. [#3559] - (Libplanet.Explorer) Changed
HashDigestSHA256TypetoHashDigestType<T>. [#3559] - (Libplanet.Explorer) Changed
BencodexValueTypeto inheritObjectGraphType<IValue>instead ofStringGraphType. Instead of simply being a hexadecimal representation ofbyte[]encodedIValue, now one can choose its representation format. [#3560] - (Libplanet.Explorer) Added
HelperQuery, a collection of utility like queries. [#3561] - (Libplanet.Explorer) Removed
IRichStore.StoreUpdatedAddressReferences()andIterateUpdatedAddressReferences()interface methods. [#3562] - (Libplanet.Explorer) Removed
involvedAddressargument from allTransactionQueryquery methods. [#3562] - (Libplanet.Explorer) Removed
IRichStoreinterface. [#3564] - (Libplanet.Explorer) Removed parameters
mysql-server,mysql-port,mysql-username,mysql-password, andmysql-databasefromLibplanet.Explorer.Executable. [#3564] - Changed
TxInvoiceto no longer allow negative values forMaxGasPriceandGasLimit. [#3567] - (Libplanet.Explorer) Added
AccountStateTypeclass. [#3570] - (Libplanet.Explorer) Added
accountandaccountsquery toStateQuery. [#3570] - (Libplanet.Store) Changed
ShortNodeto no longer inheritBaseNode.ShortNode.Valueis no longer nullable. [#3572] - (Libplanet.Store) Removed
FullNode()and addedFullNode.Empty. [#3573] - (Libplanet.Store) Slightly optimized
ITrieperformance. [#3573] - (Libplanet.Store) Changed
FullNodeto no longer inheritBaseNode. [#3574] - (Libplanet.Store) Removed
BaseNode. [#3574] - (Libplanet.Store) Added
ITrie.Remove()interface method. [#3576] - (Libplanet.Store) Added
FullNode.RemoveChild()method. [#3576] - (Libplanet.Action) Added
IAccount.RemoveState()interface method. [#3577] - (Libplanet.Explorer) Added
LegacyBencodexValueTypeclass that is a copy of an oldBencodexValueTypewith its name changed for backwards compatibility. Changed oldstatesquery to useLegacyBencodexValueTypeinstead ofBencodexValueType. [#3579]
Version 3.9.2
Released on December 15, 2023.
- (Libplanet.RocksDBStore) Added
DBOptionstype parameter toRocksDBKeyValueStore(). [#3553]
Version 3.9.1
Released on December 8, 2023.
- (Libplanet.Explorer) Added
INCLUDEDtoTxStatusenum. [#3542]
Version 3.9.0
Released on December 5, 2023.
Due to changes in #3529, a network ran with a prior version may not
be compatible with this version, specifically, those that ran with
Libplanet 2.0.0 and onwards prior to this release that have included
Transactions that aren't compatible with the updated specification in #3529.
Backward-incompatible API changes
- (Libplanet.Action) Removed unnecessary extension methods: [#3520]
IReadOnlyList<IActionEvaluation>.GetRawTotalDelta()IReadOnlyList<IAccountDelta>.OrderedSum()IAccountDelta.ToRawDelta()IAccount.GetUpdatedStates()IAccount.GetUpdatedBalances()IAccount.GetUpdatedTotalSupplies()
- (Libplanet.Action) Changed
IAccountto no longer trackIAccountDelta. [#3520] - (Libplanet.Action) Removed
IAccountDeltaas parameter for constructors ofAccountclass. [#3520] - (Libplanet.Action) Removed
hashedSignatureof typebyte[]parameter fromActionEvaluator.GenerateRandomSeed(). [#3523] - Changed
TxInvoiceto no longer allow having the null-ness ofMaxGasPriceandGasLimitto be different, i.e. either both should be null or both should not be null at the same time. [#3529] - (Libplanet.Action) Removed
IAccountDeltainterface. [#3535] - (Libplanet.Action) Removed
IAccount.Deltainterface property. [#3535] - (Libplanet.Action) Changed constructor
IAccount(IAccountState, IImmutableDictionary<(Address, Currency), BigInteger>)toIAccount(IAccountState, IImmutableHashSet<(Address, Currency)>). [#3537]
Version 3.8.1
Released on November 27, 2023.
- (Libplanet.Net) Fixed a bug where
GossipConsensusMessageCommunicatordoes not clear_peerCatchupRoundsonOnStartHeight(). [#3519] - (Libplanet.Net)
GossipConsensusMessageCommunicatornow filtersConsensusVoteMsgwhich height is different from latestContext. [#3519] - (Libplanet.Action) Fixed a bug where initialization of
AccountMetricsis absent. [#3521]
Version 3.8.0
Released on November 24, 2023.
Backward-incompatible API changes
- Removed
updatedAddressesparameter fromBlockChain.MakeTransaction()[#3480] - Removed
updatedAddressesparameter fromTransaction.Create(). [#3480] - Removed
updatedAddressesparameter from allTxInvoice(). [#3480] - Removed
Rehearsalproperty fromIActionContextandICommittedActionContext. [#3485] - (Libplanet.Crypto) Removed
ToAddress()extension method forPrivateKeyandPublicKey. [#3486] - (Libplanet.Crypto) Added
Addressproperty toPrivateKeyandPublicKey. [#3486]
Backward-incompatible storage format changes
- (Libplanet.Store) Changed
Libplanet.RocksDBStoreto useRocksDbinstead ofRocksDBSharp. Note Cannot read new version ofLibplanet.RocksDBStorestorage from underLibplanet.RocksDBStoreversion 3.6.1. [#1848, #3487]
Added APIs
- (Libplanet.RocksDBStore) Added
RocksDBInstanceTypeenum. [#3488] - (Libplanet.RocksDBStore) Changed
RocksDBStoreandRocksDBKeyValueStoreto acceptRocksDBInstanceTypetypeinstanceTypeparameter instead of@readonlyparameter in their constructor. [#3488, RocksDb Instance Types]
Version 3.7.1
Released on November 21, 2023.
- Ported changes from Libplanet 3.6.1 release. [#3500]
- Ported changes from Libplanet 3.6.2 release. [#3509]
Version 3.7.0
Released on October 27, 2023.
Backward-incompatible API changes
- Added
IBencodableinterface toHashDigest<T>. [#3455]
Behavioral changes
- Slightly optimized
BlockMarshaler. [#3454]
Dependencies
- Upgrade Bencodex from 0.14.0 to 0.16.0. [#3461]
- Upgrade Bencodex.Json from 0.11.0 to 0.16.0. [#3461]
Version 3.6.2
Released on November 21, 2023.
- (Libplanet.Net) Changed default
ContextTimeoutOptionvalues for more consistent and stable consensus. [#3506]
Version 3.6.1
Released on November 20, 2023.
- (Libplanet.Store) Added optional
cacheparameter of typeHashNodeCachetoMerkleTrie()constructors. [#3495] - (Libplanet.Store) Added
HashNodeCacheclass. [#3495] - (Libplanet.Store) Changed internal caching strategy of
TrieStateStorefor read/write optimization. [#3495]
Version 3.6.0
Released on October 6, 2023.
Backward-incompatible API changes
- Changed
IActionEvaluator.Evaluate()'s return type toIReadOnlyList<ICommittedActionEvaluation>fromIReadOnlyList<IActionEvaluation>. [#3445] - Changed
BlockChain.DetermineStateRootHash(IActionEvaluator, IPreEvaluationBlock, out IReadOnlyList<IActionEvaluation>)toBlockChain.DetermineStateRootHash(IActionEvaluator, IPreEvaluationBlock, out IReadOnlyList<ICommittedActionEvaluation>). [#3445] - Changed
BlockChain.EvaluateGenesis()'s return type toIReadOnlyList<ICommittedActionEvaluation>fromIReadOnlyList<IActionEvaluation>. [#3445] - Changed
BlockChain.EvaluateBlock()'s return type toIReadOnlyList<ICommittedActionEvaluation>fromIReadOnlyList<IActionEvaluation>. [#3445] - Removed
StateStoreExtensionsclass. [#3323, #3450]
Added APIs
- (Libplanet.Explorer) Added
TxResult.InputStateof typeHashDigest<SHA256>?. [#3446, #3447] - (Libplanet.Explorer) Added
TxResult.OutputStateof typeHashDigest<SHA256>?. [#3446, #3447] - (Libplanet.Explorer) Added
offsetStateRootHashof typeHashDigest<SHA256>?argument forStateQuery.statesfield. [#3448, #3449] - (Libplanet.Explorer) Added
offsetStateRootHashof typeHashDigest<SHA256>?argument forStateQuery.balancefield. [#3448, #3449] - (Libplanet.Explorer) Added
offsetStateRootHashof typeHashDigest<SHA256>?argument forStateQuery.totalSupplyfield. [#3448, #3449] - (Libplanet.Explorer) Added
offsetStateRootHashof typeHashDigest<SHA256>?argument forStateQuery.validatorsfield. [#3448, #3449]
Behavioral changes
IActionEvaluator.Evaluate(),BlockChain.EvaluateGenesis(), andBlockChain.EvaluateBlock()have a side-effect of storing data toIStateStorewhen called. [#3445]
Version 3.5.0
Released on October 4, 2023.
Backward-incompatible API changes
- Removed
IActionContext.Randomproperty. UseIActionContext.GetRandom()instead. [#3437] - Added
IActionContext.RandomSeedproperty. [#3437] - Added
IActionContext.GetRandom()method. [#3437] - Changed
IActionEvaluator.Evaluate(IPreEvaluationBlock)toIActionEvaluator.Evaluate(IPreEvaluationBlock, HashDigest<SHA256>). [#3438] - Changed
ActionEvaluatorto acceptIStateStoreinstead ofIBlockChainStates[#3439]
Version 3.4.0
Released on September 25, 2023.
Backward-incompatible API changes
- Added
IBlockChainStates.GetAccountState(HashDigest<SHA256>?)interface method. [#3425] - Removed
TxFailure.ExceptionMetadataproperty. [#3428] - Removed
ISerializableinterface fromTxExecution,TxSuccess, andTxFailure. [#3428] - Removed
TxSuccessandTxFailureclass. [#3429] - Changed
TxExecutionclass assealedfromabstract.[#3429] - All properties of
TxExecutionexceptBlockHashandTxIdwere overhauled. [#3429] - (Libplanet.Store) Removed
IStore.PutTxExecution(TxSuccess)andIStore.PutTxExecution(TxFailure); addedIStore.PutTxExecution(TxExecution). [#3429] - (Libplanet.Explorer) Removed
TxResult.ExceptionNameof typestring?and addedTxResult.ExceptionNamesof typeList<string?>?. [#3429] - (Libplanet.Explorer) Removed
TxResult.UpdatedStatesandTxResult.UpdatedFungibleAssets. [#3429] - Changed
IActionRenderer.RenderAction(IValue, IActionContext, IAccount)toIActionRenderer.RenderAction(IValue, ICommittedActionContext, HashDigest<SHA256>). [#3431] - Changed
IActionRenderer.RenderActionError(IValue, IActionContext, Exception)toIActionRenderer.RenderActionError(IValue, ICommittedActionContext, Exception). [#3431]
Added APIs
- Added
AccountDiffclass. [#3424] - Added
ICommittedActionContextinterface. [#3431] - Added
ICommittedActionEvaluationinterface. [#3431]
Version 3.3.1
Released on September 8, 2023.
- (Libplanet.Store) Fixed a bug where
ITrie.Get()could wrongly retrieve anIValuefrom a non-existent path. [#3420]
Version 3.3.0
Released on September 7, 2023.
Backward-incompatible API changes
- (Libplanet.Store) Removed
ITrie.Commit()method. [#3392] - (Libplanet.Store) Added
IStateStore.Commit()method. [#3398] - (Libplanet.Store) Removed
IKeyValueStore.Get(IEnumerable<KeyBytes> keys)method. [#3362, #3400] - (Libplanet.Store) Added
PathCursorstruct. [#3399] - (Libplanet.Store) Added
Nibblesstruct. [#3399] - (Libplanet.Store) Changed
KeyBytesto no longer implementIEquatable<byte[]>andIEquatable<ImmutableArray<byte>>. [#3402] - (Libplanet.Store) Added
ITrie.GetNode()method. [#3401] - (Libplanet.Store) Added
ITrie.IterateValues()method. [#3405] - (Libplanet.Store) Added
ITrie.IterateNodes()method. [#3405] - (Libplanet.Store) Removed
Secureoption fromTrieStateStore. [#3407]- Removed
secureparameter fromTrieStateStore(). - Removed
ITrie.Secureproperty. - Removed
secureparameter fromMerkleTrie(). - Removed
secureparameter fromPathCursor().
- Removed
- (Libplanet.Store) Added
ITrie.Diff()method. [#3410] - (Libplanet.Store) Removed
MerkleTrieExtensions.DifferentNodes()static method. [#3410] - Removed
IBlockStateinterface. [#3413] - Removed
IBlockChainState.GetBlockState()interface method. [#3413] - Added
IBlockChainState.GetAccountState()interface method. [#3413] - Added
IAccountStateinterface. [#3416] - Added
AccountStateclass. [#3416]
Added APIs
- (Libplanet.RocksDBStore)
RocksDBStoreandRocksDBKeyValueStorebecame to receive@readonlyparameter in their constructor. If it is true, it opens rocksdb as read-only mode. [#3354, #3356, RocksDB Read Only]
Behavioral changes
- (Libplanet.Store) Changed
ShortNodeto no longer accept emptybytearrays. [#3390]
Bug fixes
- (Libplanet.Store) Fixed
Equals()forFullNodeandShortNode. [#3377] - (Libplanet.Store) Fixed a bug where adding two
bytearrays as keys with one being a subsequence of the other would breakMerkleTrieand lose data. [#3390] - (Libplanet.Store) Fixed a bug where when trying to add a value to
an existing
FullNodewould throw anException. [#3390] - (Libplanet.Store) Fixed a bug where committing an
ITriemay return anITriewith a different path security scheme. [#3401]
Version 3.2.0
Released on August 10, 2023.
Backward-incompatible API changes
- (Libplanet.Action) Renamed
IAccountStateDeltaasIAccount. [#3337] - (Libplanet.Store) Optimized
MerkleTrie.Get(). [#3347] - (Libplanet.Types) Removed
TxSuccess.FungibleAssetsDelta[#3357] - (Libplanet.Explorer) Removed
TxResult.ExceptionMetadataandTxResult.FungibleAssetsDelta. [#3357] - (Libplanet.Store) Added
ITrie.Get(KeyBytes)interface method. [#3359] - (Libplanet.Store) Optimized
MerkleTrie.Get()by allowing parallel processing when more than 4KeyByteskeys are given. [#3359]
Version 3.1.2
Released on August 10, 2023.
Version 3.1.1
Released on August 9, 2023.
Version 3.1.0
Released on July 27, 2023.
Backward-incompatible API changes
- Changed
StateStoreExtensions.Commit()to acceptIImmutableDictionary<KeyBytes, IValue>instead ofIImmutableDictionary<string, IValue>. [#3321] - Changed
AccountDeltaExtensions.ToRawDelta()to returnIImmutableDictionary<KeyBytes, IValue>instead ofIImmutableDictionary<string, IValue>. [#3321] - Changed
ActionEvaluatorExtensions.GetRawTotalDelta()to returnIImmutableDictionary<KeyBytes, IValue>instead ofIImmutableDictionary<string, IValue>. [#3321] - Removed
EnumerableMeasurementclass. [#3325] - Removed
KeyValueExtensionsclass. [#3325] - Removed
StateStoreExtensions.EncodeKey()andStateStoreExtensions.DecodeKey()methods. [#3328] - Removed
StateStoreExtensions.GetStates(IStateStore, HashDigest<SHA256>?, IReadOnlyList<string>)method. [#3328] - Removed
TrieExtensions.Set(ITrie, IEnumerable<KeyValuePair<string, IValue?>)method. [#3328] - Removed
KeyBytes(string, Encoding)constructor. [#3328]
Added APIs
- Added
StateStoreExtensions.GetStates(IStateStore, HashDigest<SHA256>, IReadOnlyList<KeyBytes>)method. [#3321] - Added
KeyBytes.Encodingstatic property. [#3328] - Added
KeyBytes(string)constructor. [#3328]
Behavioral changes
- Optimized read and write access to
IStateStoreboth for memory and speed. [#3321]
Dependencies
Version 3.0.1
Released on July 21, 2023.
- Fixed builds and tests. [#3326]
Version 3.0.0
Released on July 19, 2023.
Backward-incompatible API changes
- (Libplanet.Common) Moved packages from
Libplanet. [#3300]Libplanet.SerializationLibplanet.JsonConverters
- (Libplanet.Common) Moved packages from
Libplanet. [#3314]Libplanet.Misc
- (Libplanet.Crypto) Moved packages from
Libplanet. [#3314]Libplanet.Crypto
- (Libplanet.Types) Moved packages from
Libplanet. [#3314]Libplanet.AssetsLibplanet.BlocksLibplanet.ConsensusLibplanet.Tx
- (Libplanet.Store) Moved packages from
Libplanet. [#3303]Libplanet.Store
- (Libplanet.Action) Moved packages from
Libplanet. [#3310]Libplanet.Action
- Removed
IExtractableExceptionandExtractableException. [#3304]
Added APIs
- (Libplanet.Net) Added
Gossip.DeniedPeersproperty. [#3313]
Behavioral changes
TxFailureno longer tracksExceptionMetadataand is always set tonulleven for already storedTxFailure. [#3304]