Libplanet changelog
Version 4.6.1
Released on June 11, 2024.
- Ported changes from Libplanet 4.5.2 release. [#3816]
Version 4.6.0
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.
Deprecated APIs
Backward-incompatible API changes
- (Libplanet.Action) Changed
ActionEvaluate.Evaluate()
to no longer acceptIPreEvaluationBlock
with a protocol version less thanBlockMetadata.PBFTProtocolVersion
. [#3789] - (Libplanet.Action) Changed the description of
IActionEvaluate.Evaluate()
so that it may throwBlockProtocolVersionNotSupportedException
if its implementation is not able to handleIPreEvaluationBlock
with certainBlockMetadata.ProtocolVersion
s. [#3789] - (Libplanet.Types) Removed
nonce
parameter fromBlockMetadata.DerivePreEvaluationHash()
andBlockMetadata.MakeCandidateData()
methods. [#3793, #3794] - (Libplanet.Explorer.Executable) Removed unused
difficultyBoundDivisor
parameter for the executable and removedOptions.DifficultyBoundDivisor
property. [#3796] - (Libplanet.Explorer) Added
balance
,totalSupply
, andvalidatorSet
queries toWorldStateType
. [#3792, #3798] - (Libplanet.Explorer) Deprecated
balance
,balances
,totalSupply
andvalidatorSet
query fromAccountStateType
. [#3792, #3798] - (Libplanet.Explorer) Changed
totalSupply
query underStateQuery
to no longer throw anException
and return a zero amount instead. [#3799]
Added APIs
- (Libplanet.Action) Added
BlockProtocolVersionNotSupportedException
class. [#3789] - (Libplanet.Mocks) Added
MockBlockChainStates
class. [#3799]
Version 4.5.2
Released on June 10, 2024.
- (Libplanet.Explorer) Added
ProtocolVersion
field toBlockType
. [#3810]
Version 4.5.1
Released on May 27, 2024.
- Suppressed build warnings as a temporary measure that may result in build failures due to security vulnerabilities found in LiteDB 4.1.4 and BouncyCastle.Cryptography 2.0.0 packages. [#3800]
Version 4.5.0
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.
Backward-incompatible API changes
- (Libplanet.Types) Updated
BlockMetadata.CurrentProtocolVersion
from 6 to 7. [#3769] - (Libplanet.Store) Added
IterateSubTrieValues(KeyBytes)
andIterateSubTrieNodes(KeyBytes)
methods toMerkleTrie
. [#3774] - (Libplanet.Types) Added
BlockMetadata.CurrencyAccountProtocolVersion
. [#3775] - (Libplanet.Mocks) Removed
MockWorldState.ToModern()
andMockWorldState.SetTotalSupply()
methods. [#3778] - (Libplanet.Action) Removed
TotalSupplyNotTrackableException
class. [#3780] - (Libplanet.Action)
IWorldState.GetTotalSupply()
no longer throws aTotalSupplyNotTrackableException
but returns a zero amount of correspondingFungibleAssetValue
. [#3780] - (Libplanet.Action) Changed the precednce for the types of
Exception
s that may be thrown byIWorld.MintAsset()
andIWorld.BurnAsset()
.
Added APIs
- (Libplanet.Action) Added
CurrencyAccount
class. [#3779]
Behavioral changes
- (Libplanet.Mocks)
MockWorldState.SetBalance()
now automatically updates the total supply of the providedCurrency
. [#3778]
Version 4.4.2
Released on April 29, 2024.
- (Libplanet.Explorer) Added
KeyBytesType
andTrieType
. [#3763] - (Libplanet.Explorer) Added
RawStateQuery
. [#3763]
Version 4.4.1
Released on April 18, 2024.
- Ported changes from Libplanet 4.3.1 release. [#3757]
Version 4.4.0
Released on April 17, 2024.
Backward-incompatible API changes
- (Libplanet.Action) Removed
IWorld.SetValidator()
extension method. UseIWorld.SetValidatorSet()
extension method instead. [#3735] - (Libplanet.Types) Renamed
BlockMetadata.PoWProtocolVersion
toBlockMetadata.PBFTProtocolVersion
andBlockMetadata.LegacyStateVersion
toBlockMetadata.WorldStateProtocolVersion
while increasing each value by 1. [#3736] - (Libplanet.Store) Changed the type of
TrieMetadata.Version
fromBigInteger
toint
. [#3738] - (Libplanet.Store) Changed
TrieMetadata
to throw anArgumentException
when trying to create an instance with an invalid version. [#3738] - (Libplanet.Action) Added
IWorldState.Version
interface property. [#3739] - (Libplanet.Types) Updated
BlockMetadata.CurrentProtocolVersion
from 5 to 6. [#3741] - (Libplanet.Types) Added
BlockMetadata.TransferFixProtocolVersion
,BlockMetadata.SignatureProtocolVersion
, andBlockMetadata.TransactionOrderingFixProtocolVersion
constants. [#3742] - (Libplanet.Action) Removed
ReservedAddresses.FungibleAssetAccount
. [#3745] - (Libplanet.Action) Changed
ReservedAddresses.ValidatorSetAccount
's value from0x1000000000000000000000000000000000000002
to0x100000000000000000000000000000000000001
. [#3745]
Added APIs
- (Libplanet.Action) Added
ValidatorSetAccount
class. [#3745] - (Libplanet.Explorer) Added
WorldState.version
field. [#3746]
Version 4.3.1
Released on April 18, 2024.
Version 4.3.0
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
.
Backward-incompatible API changes
- (Libplanet.Action) Added
Txs
property of typeIReadOnlyList<ITransaction>?
toIActionContext
. [#3713] - (Libplanet.Action) Removed
TotalFungibleAssets
property fromIWorld
. [#3714] - (Libplanet.Action) Changed
GetBalance()
,GetTotalSupply()
, andGetValidatorSet()
ofIWorldState
to extension methods. [#3715] - (Libplanet.Action) Changed
MintAsset()
,BurnAsset()
,TransferAsset()
, andSetValidator()
ofIWorld
to extension methods. [#3715] - (Libplanet.Action) Removed
allowNegativeBalance
parameter fromIWorld.TransferAsset()
extension method. [#3725, #3728] - (Libplanet.Store) Removed
journal
,indexCacheSize
, andflush
parameters fromDefaultStore
's constructor. [#3729]
Dependencies
Version 4.2.0
Released on March 22, 2024.
Backward-incompatible API changes
- (Libplanet.Action) Moved
GetBalance()
andGetTotalSupply()
methods fromIAccountState
toIWorldState
. [#3694, #3697] - (Libplanet.Action) Moved
MintAsset()
,BurnAsset()
, andTransferAsset()
methods fromIAccount
toIWorld
. [#3694, #3697] - (Libplanet.Action) Removed
TotalSupplyDiff
,FungibleAssetValueDiff
, andValidatorDiff
properties fromAccountDiff
. [#3694, #3697] - (Libplanet.Action) Removed
Uncommitted
property andCommitAccount()
method fromIWorldDelta
. [#3694, #3699] - (Libplanet.Action) Moved
GetValidatorSet()
fromIAccountState
toIWorldState
. [#3702] - (Libplanet.Action) Moved
SetValidator()
fromIAccount
toIWorld
. [#3702]
Added APIs
- Added
Libplanet.Mocks
project. [#3642]
Version 4.1.0
Released on March 8, 2024.
Backward-incompatible API changes
- Removed the '#nullable disable' from 3 projects (Action, Common, Explorer). [#3622]
- Removed the '#nullable disable' from the Libplanet.Store project. [#3644]
- Removed the '#nullable disable' from the Libplanet.RocksDBStore project. [#3651]
- Removed
BaseIndex
class and changedBlockSet
base class fromBaseIndex<BlockHash, Block>
toIReadOnlyDictionary<BlockHash, Block>
. [#3686]
Backward-incompatible network protocol changes
- (Libplanet.Net) Changed some types due to removal of 'nullable keyword'.
[#3669]
- Changed
blocks
parameter type ofBranch
class constructor fromIEnumerable<(Block, BlockCommit)>
toIEnumerable<(Block, BlockCommit?)>
. - Changed
AppProtocolVersion.Extra
field type fromIValue
toIValue?
. - Changed
extra
parameter type ofAppProtocolVersion
class constructor fromIValue
toIValue?
. - Changed
extra
parameter type ofAppProtocolVersion.Sign
method fromIValue
toIValue?
.
- Changed
Added APIs
- (Libplanet.Store.Remote) Introduce
Libplanet.Store.Server.RemoteKeyValueService
[#3688] - (Libplanet.Store.Remote) Introduce
Libplanet.Store.Client.RemoteKeyValueStore
[#3688]
Behavioral changes
- (Libplanet.Store) Optimized
ITrie.IterateNodes()
to greatly reduce the amount of memory used. [#3687]
Version 4.0.6
Released on February 22, 2024.
- (Libplanet.Action) Fixed a bug where
FeeCollector.Mortgage()
unintentionally resets accumulatedAccount.TotalUpdatedFungibleAssets
. [#3680]
Version 4.0.5
Released on February 20, 2024.
- (Libplanet.Action) Optimized
ActionEvaluation
by removing redundant commits. [#3675]
Version 4.0.4
Released on February 7, 2024.
- (Libplanet.Explorer) Revert a GraphQL query argument type change to make it compatible with old schema. [#3663]
Version 4.0.3
Released on February 6, 2024.
- (Libplanet.Explorer) Revert GraphQL types to make it more compatible
with old schema. [#3657]
- Rolled back
TxResultType
's name to auto generatedTxResultType
from specifiedTxResult
. - Rolled back
BlockHash
andTxId
to be handled asIDGraphType
instead ofBlockHashType
andTxIdType
in legacy queries. - Rolled back
HashDigest<SHA256>
to be handled asHashDigestSHA256Type
instead ofHashDigestType<T>
in legacy queries.
- Rolled back
Version 4.0.2
Released on February 6, 2024.
- (Libplanet.Net) Changed
AppProtocolVersion.FromToken()
to throw anException
with more details. [#3648] - (Libplanet.Explorer) Updated outdated GraphQL schema. [#3649]
Version 4.0.1
Released on January 26, 2024.
- (Libplanet.Action) Changed
IWorld.SetAccount()
to throw anArgumentException
under certain undesirable circumstances. [#3633]
Version 4.0.0
Released on January 22, 2024.
Backward-incompatible API changes
- Bumped
BlockMetadata.CurrentProtocolVersion
to 5. [#3524] - Removed
BlockChain.GetBalance(Address, Currency, Address)
method. [#3583] - Removed
BlockChain.GetTotalSupply(Currency, Address)
method. [#3583] - (Libplanet.Action) Changed
ActionEvaluator
to acceptIWorld
instead ofIAccount
. [#3462] - (Libplanet.Action)
IActionEvaluation.OutputState
becameIWorld
. (wasIAccount
) [#3462] - (Libplanet.Action)
IAction.Execute()
became to returnIWorld
. (wasIAccount
) [#3462] - (Libplanet.Action)
IActionContext.PreviousState
becameIWorld
. (wasIAccount
) [#3462] - (Libplanet.Action) Following methods in
IFeeCollector
interface became to accept and returnIWorld
. (wasIAccount
) [#3462]IFeeCollector.Mortgage()
IFeeCollector.Refund()
IFeeCollector.Reward()
- (Libplanet.Action)
IBlockChainStates
interface has been overhauled. [#3462, #3583]- Added
IBlockChainStates.GetWorldState(BlockHash?)
method. - Added
IBlockChainStates.GetWorldState(HashDigest<SHA256>?)
method. - Removed
IBlockChainStates.GetAccountState(BlockHash?)
method. - Removed
IBlockChainStates.GetState(Address, BlockHash?)
method. - Removed
IBlockChainStates.GetStates(IReadOnlyList<Address>, BlockHash?)
method. - Removed
IBlockChainStates.GetBalance(Address, Currency, BlockHash?)
method. - Removed
IBlockChainStates.GetTotalSupply(Currency, BlockHash?)
method. - Removed
IBlockChainStates.GetValidatorSet(BlockHash?)
method.
- Added
- (@planetarium/tx) Remove the
T
generic argument ofSignedTx<T>
. [#3512] - (Libplanet.Common) Removed
EnumerableExtensions
class. [#3625, #3626]
Added APIs
- Added
BlockMetadata.LegacyStateVersion
constant. [#3524] - (Libplanet.Action) Added
IWorld
interface and its implementation. [#3462]- Added
World
class.
- Added
- (Libplanet.Action) Added
IWorldDelta
interface. [#3462] - (Libplanet.Action) Added
IWorldState
interface and its implementation. [#3462]- Added
WorldBaseState
class.
- Added
- (Libplanet.Action) Added
ReservedAddresses
static class. [#3462] - (Libplanet.Store) Added
TrieMetadata
class. [#3540] - (Libplanet.Explorer) Added
AccountStateType
class. [#3462] - (Libplanet.Explorer) Added
WorldStateType
class. [#3462] - (Libplanet.Explorer) Added
StateQuery.world
field. [#3462] - (Libplanet.Explorer) Changed
account
andaccounts
query inStateQuery
to be compatible withstateQuery.world
. [#3589]