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 Blocks. That is, it is no longer possible to
reconstruct states with valid state root hashes purely from past
Blocks that includes PoW Blocks.
Deprecated APIs
Backward-incompatible API changes
- (Libplanet.Action) Changed
ActionEvaluate.Evaluate()to no longer acceptIPreEvaluationBlockwith a protocol version less thanBlockMetadata.PBFTProtocolVersion. [#3789] - (Libplanet.Action) Changed the description of
IActionEvaluate.Evaluate()so that it may throwBlockProtocolVersionNotSupportedExceptionif its implementation is not able to handleIPreEvaluationBlockwith certainBlockMetadata.ProtocolVersions. [#3789] - (Libplanet.Types) Removed
nonceparameter fromBlockMetadata.DerivePreEvaluationHash()andBlockMetadata.MakeCandidateData()methods. [#3793, #3794] - (Libplanet.Explorer.Executable) Removed unused
difficultyBoundDivisorparameter for the executable and removedOptions.DifficultyBoundDivisorproperty. [#3796] - (Libplanet.Explorer) Added
balance,totalSupply, andvalidatorSetqueries toWorldStateType. [#3792, #3798] - (Libplanet.Explorer) Deprecated
balance,balances,totalSupplyandvalidatorSetquery fromAccountStateType. [#3792, #3798] - (Libplanet.Explorer) Changed
totalSupplyquery underStateQueryto no longer throw anExceptionand return a zero amount instead. [#3799]
Added APIs
- (Libplanet.Action) Added
BlockProtocolVersionNotSupportedExceptionclass. [#3789] - (Libplanet.Mocks) Added
MockBlockChainStatesclass. [#3799]
Version 4.5.2
Released on June 10, 2024.
- (Libplanet.Explorer) Added
ProtocolVersionfield 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.CurrentProtocolVersionfrom 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
TotalSupplyNotTrackableExceptionclass. [#3780] - (Libplanet.Action)
IWorldState.GetTotalSupply()no longer throws aTotalSupplyNotTrackableExceptionbut returns a zero amount of correspondingFungibleAssetValue. [#3780] - (Libplanet.Action) Changed the precednce for the types of
Exceptions that may be thrown byIWorld.MintAsset()andIWorld.BurnAsset().
Added APIs
- (Libplanet.Action) Added
CurrencyAccountclass. [#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
KeyBytesTypeandTrieType. [#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.PoWProtocolVersiontoBlockMetadata.PBFTProtocolVersionandBlockMetadata.LegacyStateVersiontoBlockMetadata.WorldStateProtocolVersionwhile increasing each value by 1. [#3736] - (Libplanet.Store) Changed the type of
TrieMetadata.VersionfromBigIntegertoint. [#3738] - (Libplanet.Store) Changed
TrieMetadatato throw anArgumentExceptionwhen trying to create an instance with an invalid version. [#3738] - (Libplanet.Action) Added
IWorldState.Versioninterface property. [#3739] - (Libplanet.Types) Updated
BlockMetadata.CurrentProtocolVersionfrom 5 to 6. [#3741] - (Libplanet.Types) Added
BlockMetadata.TransferFixProtocolVersion,BlockMetadata.SignatureProtocolVersion, andBlockMetadata.TransactionOrderingFixProtocolVersionconstants. [#3742] - (Libplanet.Action) Removed
ReservedAddresses.FungibleAssetAccount. [#3745] - (Libplanet.Action) Changed
ReservedAddresses.ValidatorSetAccount's value from0x1000000000000000000000000000000000000002to0x100000000000000000000000000000000000001. [#3745]
Added APIs
- (Libplanet.Action) Added
ValidatorSetAccountclass. [#3745] - (Libplanet.Explorer) Added
WorldState.versionfield. [#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
IActions that has allowed negative balances through TransferAssets()
with allowNegativeBalance as true.
Backward-incompatible API changes
- (Libplanet.Action) Added
Txsproperty of typeIReadOnlyList<ITransaction>?toIActionContext. [#3713] - (Libplanet.Action) Removed
TotalFungibleAssetsproperty fromIWorld. [#3714] - (Libplanet.Action) Changed
GetBalance(),GetTotalSupply(), andGetValidatorSet()ofIWorldStateto extension methods. [#3715] - (Libplanet.Action) Changed
MintAsset(),BurnAsset(),TransferAsset(), andSetValidator()ofIWorldto extension methods. [#3715] - (Libplanet.Action) Removed
allowNegativeBalanceparameter fromIWorld.TransferAsset()extension method. [#3725, #3728] - (Libplanet.Store) Removed
journal,indexCacheSize, andflushparameters fromDefaultStore's constructor. [#3729]
Dependencies
Version 4.2.0
Released on March 22, 2024.
Backward-incompatible API changes
- (Libplanet.Action) Moved
GetBalance()andGetTotalSupply()methods fromIAccountStatetoIWorldState. [#3694, #3697] - (Libplanet.Action) Moved
MintAsset(),BurnAsset(), andTransferAsset()methods fromIAccounttoIWorld. [#3694, #3697] - (Libplanet.Action) Removed
TotalSupplyDiff,FungibleAssetValueDiff, andValidatorDiffproperties fromAccountDiff. [#3694, #3697] - (Libplanet.Action) Removed
Uncommittedproperty andCommitAccount()method fromIWorldDelta. [#3694, #3699] - (Libplanet.Action) Moved
GetValidatorSet()fromIAccountStatetoIWorldState. [#3702] - (Libplanet.Action) Moved
SetValidator()fromIAccounttoIWorld. [#3702]
Added APIs
- Added
Libplanet.Mocksproject. [#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
BaseIndexclass and changedBlockSetbase 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
blocksparameter type ofBranchclass constructor fromIEnumerable<(Block, BlockCommit)>toIEnumerable<(Block, BlockCommit?)>. - Changed
AppProtocolVersion.Extrafield type fromIValuetoIValue?. - Changed
extraparameter type ofAppProtocolVersionclass constructor fromIValuetoIValue?. - Changed
extraparameter type ofAppProtocolVersion.Signmethod fromIValuetoIValue?.
- 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
ActionEvaluationby 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 generatedTxResultTypefrom specifiedTxResult. - Rolled back
BlockHashandTxIdto be handled asIDGraphTypeinstead ofBlockHashTypeandTxIdTypein legacy queries. - Rolled back
HashDigest<SHA256>to be handled asHashDigestSHA256Typeinstead ofHashDigestType<T>in legacy queries.
- Rolled back
Version 4.0.2
Released on February 6, 2024.
- (Libplanet.Net) Changed
AppProtocolVersion.FromToken()to throw anExceptionwith 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 anArgumentExceptionunder certain undesirable circumstances. [#3633]
Version 4.0.0
Released on January 22, 2024.
Backward-incompatible API changes
- Bumped
BlockMetadata.CurrentProtocolVersionto 5. [#3524] - Removed
BlockChain.GetBalance(Address, Currency, Address)method. [#3583] - Removed
BlockChain.GetTotalSupply(Currency, Address)method. [#3583] - (Libplanet.Action) Changed
ActionEvaluatorto acceptIWorldinstead ofIAccount. [#3462] - (Libplanet.Action)
IActionEvaluation.OutputStatebecameIWorld. (wasIAccount) [#3462] - (Libplanet.Action)
IAction.Execute()became to returnIWorld. (wasIAccount) [#3462] - (Libplanet.Action)
IActionContext.PreviousStatebecameIWorld. (wasIAccount) [#3462] - (Libplanet.Action) Following methods in
IFeeCollectorinterface became to accept and returnIWorld. (wasIAccount) [#3462]IFeeCollector.Mortgage()IFeeCollector.Refund()IFeeCollector.Reward()
- (Libplanet.Action)
IBlockChainStatesinterface 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
Tgeneric argument ofSignedTx<T>. [#3512] - (Libplanet.Common) Removed
EnumerableExtensionsclass. [#3625, #3626]
Added APIs
- Added
BlockMetadata.LegacyStateVersionconstant. [#3524] - (Libplanet.Action) Added
IWorldinterface and its implementation. [#3462]- Added
Worldclass.
- Added
- (Libplanet.Action) Added
IWorldDeltainterface. [#3462] - (Libplanet.Action) Added
IWorldStateinterface and its implementation. [#3462]- Added
WorldBaseStateclass.
- Added
- (Libplanet.Action) Added
ReservedAddressesstatic class. [#3462] - (Libplanet.Store) Added
TrieMetadataclass. [#3540] - (Libplanet.Explorer) Added
AccountStateTypeclass. [#3462] - (Libplanet.Explorer) Added
WorldStateTypeclass. [#3462] - (Libplanet.Explorer) Added
StateQuery.worldfield. [#3462] - (Libplanet.Explorer) Changed
accountandaccountsquery inStateQueryto be compatible withstateQuery.world. [#3589]