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 anITrie
with either itsRoot
asnull
or 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
BencodexValueType
toIValueType
. - Changed the name
LegacyBencodexValueType
toBencodexValueType
. - Changed
AddressType.Name
fromaddress
toAddress
. - Changed
BlockHashType.Name
fromblockHash
toBlockHash
. - Changed
PublicKeyType.Name
frompublicKey
toPublicKey
. - Changed
TxIdType.Name
fromtxId
toTxId
.
- 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
Transaction
s that aren't compatible with the updated specification in #3567.
- (Libplanet.Explorer) Added
BlockHashType
andTxIdType
. [#3559] - (Libplanet.Explorer) Changed
HashDigestSHA256Type
toHashDigestType<T>
. [#3559] - (Libplanet.Explorer) Changed
BencodexValueType
to 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
involvedAddress
argument from allTransactionQuery
query methods. [#3562] - (Libplanet.Explorer) Removed
IRichStore
interface. [#3564] - (Libplanet.Explorer) Removed parameters
mysql-server
,mysql-port
,mysql-username
,mysql-password
, andmysql-database
fromLibplanet.Explorer.Executable
. [#3564] - Changed
TxInvoice
to no longer allow negative values forMaxGasPrice
andGasLimit
. [#3567] - (Libplanet.Explorer) Added
AccountStateType
class. [#3570] - (Libplanet.Explorer) Added
account
andaccounts
query toStateQuery
. [#3570] - (Libplanet.Store) Changed
ShortNode
to no longer inheritBaseNode
.ShortNode.Value
is no longer nullable. [#3572] - (Libplanet.Store) Removed
FullNode()
and addedFullNode.Empty
. [#3573] - (Libplanet.Store) Slightly optimized
ITrie
performance. [#3573] - (Libplanet.Store) Changed
FullNode
to 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
LegacyBencodexValueType
class that is a copy of an oldBencodexValueType
with its name changed for backwards compatibility. Changed oldstates
query to useLegacyBencodexValueType
instead ofBencodexValueType
. [#3579]
Version 3.9.2
Released on December 15, 2023.
- (Libplanet.RocksDBStore) Added
DBOptions
type parameter toRocksDBKeyValueStore()
. [#3553]
Version 3.9.1
Released on December 8, 2023.
- (Libplanet.Explorer) Added
INCLUDED
toTxStatus
enum. [#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
Transaction
s 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
IAccount
to no longer trackIAccountDelta
. [#3520] - (Libplanet.Action) Removed
IAccountDelta
as parameter for constructors ofAccount
class. [#3520] - (Libplanet.Action) Removed
hashedSignature
of typebyte[]
parameter fromActionEvaluator.GenerateRandomSeed()
. [#3523] - Changed
TxInvoice
to no longer allow having the null-ness ofMaxGasPrice
andGasLimit
to be different, i.e. either both should be null or both should not be null at the same time. [#3529] - (Libplanet.Action) Removed
IAccountDelta
interface. [#3535] - (Libplanet.Action) Removed
IAccount.Delta
interface 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
GossipConsensusMessageCommunicator
does not clear_peerCatchupRounds
onOnStartHeight()
. [#3519] - (Libplanet.Net)
GossipConsensusMessageCommunicator
now filtersConsensusVoteMsg
which height is different from latestContext
. [#3519] - (Libplanet.Action) Fixed a bug where initialization of
AccountMetrics
is absent. [#3521]
Version 3.8.0
Released on November 24, 2023.
Backward-incompatible API changes
- Removed
updatedAddresses
parameter fromBlockChain.MakeTransaction()
[#3480] - Removed
updatedAddresses
parameter fromTransaction.Create()
. [#3480] - Removed
updatedAddresses
parameter from allTxInvoice()
. [#3480] - Removed
Rehearsal
property fromIActionContext
andICommittedActionContext
. [#3485] - (Libplanet.Crypto) Removed
ToAddress()
extension method forPrivateKey
andPublicKey
. [#3486] - (Libplanet.Crypto) Added
Address
property toPrivateKey
andPublicKey
. [#3486]
Backward-incompatible storage format changes
- (Libplanet.Store) Changed
Libplanet.RocksDBStore
to useRocksDb
instead ofRocksDBSharp
. Note Cannot read new version ofLibplanet.RocksDBStore
storage from underLibplanet.RocksDBStore
version 3.6.1. [#1848, #3487]
Added APIs
- (Libplanet.RocksDBStore) Added
RocksDBInstanceType
enum. [#3488] - (Libplanet.RocksDBStore) Changed
RocksDBStore
andRocksDBKeyValueStore
to acceptRocksDBInstanceType
typeinstanceType
parameter instead of@readonly
parameter 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
IBencodable
interface 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
ContextTimeoutOption
values for more consistent and stable consensus. [#3506]
Version 3.6.1
Released on November 20, 2023.
- (Libplanet.Store) Added optional
cache
parameter of typeHashNodeCache
toMerkleTrie()
constructors. [#3495] - (Libplanet.Store) Added
HashNodeCache
class. [#3495] - (Libplanet.Store) Changed internal caching strategy of
TrieStateStore
for 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
StateStoreExtensions
class. [#3323, #3450]
Added APIs
- (Libplanet.Explorer) Added
TxResult.InputState
of typeHashDigest<SHA256>?
. [#3446, #3447] - (Libplanet.Explorer) Added
TxResult.OutputState
of typeHashDigest<SHA256>?
. [#3446, #3447] - (Libplanet.Explorer) Added
offsetStateRootHash
of typeHashDigest<SHA256>?
argument forStateQuery.states
field. [#3448, #3449] - (Libplanet.Explorer) Added
offsetStateRootHash
of typeHashDigest<SHA256>?
argument forStateQuery.balance
field. [#3448, #3449] - (Libplanet.Explorer) Added
offsetStateRootHash
of typeHashDigest<SHA256>?
argument forStateQuery.totalSupply
field. [#3448, #3449] - (Libplanet.Explorer) Added
offsetStateRootHash
of typeHashDigest<SHA256>?
argument forStateQuery.validators
field. [#3448, #3449]
Behavioral changes
IActionEvaluator.Evaluate()
,BlockChain.EvaluateGenesis()
, andBlockChain.EvaluateBlock()
have a side-effect of storing data toIStateStore
when called. [#3445]
Version 3.5.0
Released on October 4, 2023.
Backward-incompatible API changes
- Removed
IActionContext.Random
property. UseIActionContext.GetRandom()
instead. [#3437] - Added
IActionContext.RandomSeed
property. [#3437] - Added
IActionContext.GetRandom()
method. [#3437] - Changed
IActionEvaluator.Evaluate(IPreEvaluationBlock)
toIActionEvaluator.Evaluate(IPreEvaluationBlock, HashDigest<SHA256>)
. [#3438] - Changed
ActionEvaluator
to acceptIStateStore
instead 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.ExceptionMetadata
property. [#3428] - Removed
ISerializable
interface fromTxExecution
,TxSuccess
, andTxFailure
. [#3428] - Removed
TxSuccess
andTxFailure
class. [#3429] - Changed
TxExecution
class assealed
fromabstract.
[#3429] - All properties of
TxExecution
exceptBlockHash
andTxId
were overhauled. [#3429] - (Libplanet.Store) Removed
IStore.PutTxExecution(TxSuccess)
andIStore.PutTxExecution(TxFailure)
; addedIStore.PutTxExecution(TxExecution)
. [#3429] - (Libplanet.Explorer) Removed
TxResult.ExceptionName
of typestring?
and addedTxResult.ExceptionNames
of typeList<string?>?
. [#3429] - (Libplanet.Explorer) Removed
TxResult.UpdatedStates
andTxResult.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
AccountDiff
class. [#3424] - Added
ICommittedActionContext
interface. [#3431] - Added
ICommittedActionEvaluation
interface. [#3431]
Version 3.3.1
Released on September 8, 2023.
- (Libplanet.Store) Fixed a bug where
ITrie.Get()
could wrongly retrieve anIValue
from 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
PathCursor
struct. [#3399] - (Libplanet.Store) Added
Nibbles
struct. [#3399] - (Libplanet.Store) Changed
KeyBytes
to 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
Secure
option fromTrieStateStore
. [#3407]- Removed
secure
parameter fromTrieStateStore()
. - Removed
ITrie.Secure
property. - Removed
secure
parameter fromMerkleTrie()
. - Removed
secure
parameter fromPathCursor()
.
- Removed
- (Libplanet.Store) Added
ITrie.Diff()
method. [#3410] - (Libplanet.Store) Removed
MerkleTrieExtensions.DifferentNodes()
static method. [#3410] - Removed
IBlockState
interface. [#3413] - Removed
IBlockChainState.GetBlockState()
interface method. [#3413] - Added
IBlockChainState.GetAccountState()
interface method. [#3413] - Added
IAccountState
interface. [#3416] - Added
AccountState
class. [#3416]
Added APIs
- (Libplanet.RocksDBStore)
RocksDBStore
andRocksDBKeyValueStore
became to receive@readonly
parameter in their constructor. If it is true, it opens rocksdb as read-only mode. [#3354, #3356, RocksDB Read Only]
Behavioral changes
- (Libplanet.Store) Changed
ShortNode
to no longer accept emptybyte
arrays. [#3390]
Bug fixes
- (Libplanet.Store) Fixed
Equals()
forFullNode
andShortNode
. [#3377] - (Libplanet.Store) Fixed a bug where adding two
byte
arrays as keys with one being a subsequence of the other would breakMerkleTrie
and lose data. [#3390] - (Libplanet.Store) Fixed a bug where when trying to add a value to
an existing
FullNode
would throw anException
. [#3390] - (Libplanet.Store) Fixed a bug where committing an
ITrie
may return anITrie
with a different path security scheme. [#3401]
Version 3.2.0
Released on August 10, 2023.
Backward-incompatible API changes
- (Libplanet.Action) Renamed
IAccountStateDelta
asIAccount
. [#3337] - (Libplanet.Store) Optimized
MerkleTrie.Get()
. [#3347] - (Libplanet.Types) Removed
TxSuccess.FungibleAssetsDelta
[#3357] - (Libplanet.Explorer) Removed
TxResult.ExceptionMetadata
andTxResult.FungibleAssetsDelta
. [#3357] - (Libplanet.Store) Added
ITrie.Get(KeyBytes)
interface method. [#3359] - (Libplanet.Store) Optimized
MerkleTrie.Get()
by allowing parallel processing when more than 4KeyBytes
keys 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
EnumerableMeasurement
class. [#3325] - Removed
KeyValueExtensions
class. [#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.Encoding
static property. [#3328] - Added
KeyBytes(string)
constructor. [#3328]
Behavioral changes
- Optimized read and write access to
IStateStore
both 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.Serialization
Libplanet.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.Assets
Libplanet.Blocks
Libplanet.Consensus
Libplanet.Tx
- (Libplanet.Store) Moved packages from
Libplanet
. [#3303]Libplanet.Store
- (Libplanet.Action) Moved packages from
Libplanet
. [#3310]Libplanet.Action
- Removed
IExtractableException
andExtractableException
. [#3304]
Added APIs
- (Libplanet.Net) Added
Gossip.DeniedPeers
property. [#3313]
Behavioral changes
TxFailure
no longer tracksExceptionMetadata
and is always set tonull
even for already storedTxFailure
. [#3304]