Skip to content

Latest commit

 

History

History
454 lines (333 loc) · 16 KB

CHANGES.md

File metadata and controls

454 lines (333 loc) · 16 KB

Libplanet changelog

Version 4.6.0

To be released.

Deprecated APIs

  • (Libplanet.Common) Removed Nonce struct. [#3793, #3794]
  • Removed AtomicActionRenderer class. [#3795]

Backward-incompatible API changes

  • (Libplanet.Types) Removed nonce parameter from BlockMetadata.DerivePreEvaluationHash() and BlockMetadata.MakeCandidateData() methods. [#3793, #3794]
  • (Libplanet.Explorer.Executable) Removed unused difficultyBoundDivisor parameter for the executable and removed Options.DifficultyBoundDivisor property. [#3796]

Backward-incompatible network protocol changes

Backward-incompatible storage format changes

Added APIs

Behavioral changes

Bug fixes

Dependencies

CLI tools

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) and IterateSubTrieNodes(KeyBytes) methods to MerkleTrie. [#3774]
  • (Libplanet.Types) Added BlockMetadata.CurrencyAccountProtocolVersion. [#3775]
  • (Libplanet.Mocks) Removed MockWorldState.ToModern() and MockWorldState.SetTotalSupply() methods. [#3778]
  • (Libplanet.Action) Removed TotalSupplyNotTrackableException class. [#3780]
  • (Libplanet.Action) IWorldState.GetTotalSupply() no longer throws a TotalSupplyNotTrackableException but returns a zero amount of corresponding FungibleAssetValue. [#3780]
  • (Libplanet.Action) Changed the precednce for the types of Exceptions that may be thrown by IWorld.MintAsset() and IWorld.BurnAsset().

Added APIs

  • (Libplanet.Action) Added CurrencyAccount class. [#3779]

Behavioral changes

  • (Libplanet.Mocks) MockWorldState.SetBalance() now automatically updates the total supply of the provided Currency. [#3778]

Version 4.4.2

Released on April 29, 2024.

  • (Libplanet.Explorer) Added KeyBytesType and TrieType. [#3763]
  • (Libplanet.Explorer) Added RawStateQuery. [#3763]

Version 4.4.1

Released on April 18, 2024.

Version 4.4.0

Released on April 17, 2024.

Backward-incompatible API changes

  • (Libplanet.Action) Removed IWorld.SetValidator() extension method. Use IWorld.SetValidatorSet() extension method instead. [#3735]
  • (Libplanet.Types) Renamed BlockMetadata.PoWProtocolVersion to BlockMetadata.PBFTProtocolVersion and BlockMetadata.LegacyStateVersion to BlockMetadata.WorldStateProtocolVersion while increasing each value by 1. [#3736]
  • (Libplanet.Store) Changed the type of TrieMetadata.Version from BigInteger to int. [#3738]
  • (Libplanet.Store) Changed TrieMetadata to throw an ArgumentException 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, and BlockMetadata.TransactionOrderingFixProtocolVersion constants. [#3742]
  • (Libplanet.Action) Removed ReservedAddresses.FungibleAssetAccount. [#3745]
  • (Libplanet.Action) Changed ReservedAddresses.ValidatorSetAccount's value from 0x1000000000000000000000000000000000000002 to 0x100000000000000000000000000000000000001. [#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 IActions that has allowed negative balances through TransferAssets() with allowNegativeBalance as true.

Backward-incompatible API changes

  • (Libplanet.Action) Added Txs property of type IReadOnlyList<ITransaction>? to IActionContext. [#3713]
  • (Libplanet.Action) Removed TotalFungibleAssets property from IWorld. [#3714]
  • (Libplanet.Action) Changed GetBalance(), GetTotalSupply(), and GetValidatorSet() of IWorldState to extension methods. [#3715]
  • (Libplanet.Action) Changed MintAsset(), BurnAsset(), TransferAsset(), and SetValidator() of IWorld to extension methods. [#3715]
  • (Libplanet.Action) Removed allowNegativeBalance parameter from IWorld.TransferAsset() extension method. [#3725, #3728]
  • (Libplanet.Store) Removed journal, indexCacheSize, and flush parameters from DefaultStore's constructor. [#3729]

Dependencies

Version 4.2.0

Released on March 22, 2024.

Backward-incompatible API changes

  • (Libplanet.Action) Moved GetBalance() and GetTotalSupply() methods from IAccountState to IWorldState. [#3694, #3697]
  • (Libplanet.Action) Moved MintAsset(), BurnAsset(), and TransferAsset() methods from IAccount to IWorld. [#3694, #3697]
  • (Libplanet.Action) Removed TotalSupplyDiff, FungibleAssetValueDiff, and ValidatorDiff properties from AccountDiff. [#3694, #3697]
  • (Libplanet.Action) Removed Uncommitted property and CommitAccount() method from IWorldDelta. [#3694, #3699]
  • (Libplanet.Action) Moved GetValidatorSet() from IAccountState to IWorldState. [#3702]
  • (Libplanet.Action) Moved SetValidator() from IAccount to IWorld. [#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 changed BlockSet base class from BaseIndex<BlockHash, Block> to IReadOnlyDictionary<BlockHash, Block>. [#3686]

Backward-incompatible network protocol changes

  • (Libplanet.Net) Changed some types due to removal of 'nullable keyword'. [#3669]
    • Changed blocks parameter type of Branch class constructor from IEnumerable<(Block, BlockCommit)> to IEnumerable<(Block, BlockCommit?)>.
    • Changed AppProtocolVersion.Extra field type from IValue to IValue?.
    • Changed extra parameter type of AppProtocolVersion class constructor from IValue to IValue?.
    • Changed extra parameter type of AppProtocolVersion.Sign method from IValue to IValue?.

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 accumulated Account.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 generated TxResultType from specified TxResult.
    • Rolled back BlockHash and TxId to be handled as IDGraphType instead of BlockHashType and TxIdType in legacy queries.
    • Rolled back HashDigest<SHA256> to be handled as HashDigestSHA256Type instead of HashDigestType<T> in legacy queries.

Version 4.0.2

Released on February 6, 2024.

  • (Libplanet.Net) Changed AppProtocolVersion.FromToken() to throw an Exception 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 an ArgumentException 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 accept IWorld instead of IAccount. [#3462]
  • (Libplanet.Action) IActionEvaluation.OutputState became IWorld. (was IAccount) [#3462]
  • (Libplanet.Action) IAction.Execute() became to return IWorld. (was IAccount) [#3462]
  • (Libplanet.Action) IActionContext.PreviousState became IWorld. (was IAccount) [#3462]
  • (Libplanet.Action) Following methods in IFeeCollector interface became to accept and return IWorld. (was IAccount) [#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.
  • (@planetarium/tx) Remove the T generic argument of SignedTx<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.
  • (Libplanet.Action) Added IWorldDelta interface. [#3462]
  • (Libplanet.Action) Added IWorldState interface and its implementation. [#3462]
    • Added WorldBaseState class.
  • (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 and accounts query in StateQuery to be compatible with stateQuery.world. [#3589]

Previous version changes