libplanet

Blockchain in C#/.NET for on-chain, decentralized gaming

LGPL-2.1 License

Downloads
10.1K
Stars
489
Committers
79

Bot releases are visible (Hide)

libplanet - Libplanet 0.51.3

Published by github-actions[bot] over 1 year ago

Released on March 17, 2023.

Bug fixes

  • (Libplanet.Net) Fixed a bug where DealerSocket cannot connect to peers because of IPv4 return of ResolveNetMQAddressAsync(). [#2956]
libplanet - Libplanet 0.50.4

Published by github-actions[bot] over 1 year ago

Released on March 16, 2023.

  • Fixed Validator.Encoded to use a proper type Bencodex.Types.Integer for Validator.Power instead of Bencodex.Types.Binary. [#2949]
libplanet - Libplanet 0.52.1

Published by github-actions[bot] over 1 year ago

Released on March 15, 2023.

libplanet - Libplanet 0.51.2

Published by github-actions[bot] over 1 year ago

Released on March 15, 2023.

  • Ported changes from Libplanet 0.50.3 release. [#2937]
  • Fixed BlockCommit.Encoded to be more compact. [#2938]
  • Fixed Vote.Encoded and Proposal.Encoded to be more compact. [#2943]
libplanet - Libplanet 0.50.3

Published by github-actions[bot] over 1 year ago

Released on March 14, 2023.

libplanet - Libplanet 0.49.3

Published by github-actions[bot] over 1 year ago

Released on March 14, 2023.

libplanet - Libplanet 0.48.1

Published by github-actions[bot] over 1 year ago

Released on March 14, 2023.

libplanet - Libplanet 0.47.1

Published by github-actions[bot] over 1 year ago

Released on March 14, 2023.

libplanet - Libplanet 0.46.3

Published by github-actions[bot] over 1 year ago

Released on March 14, 2023.

  • Fixed Validator.Encoded to be more compact. [#2927]
libplanet - Libplanet 0.52.0

Published by github-actions[bot] over 1 year ago

Released on March 3, 2022.

Due to changes in [#2894], under certain circumstances, a network ran with Libplanet 0.51.0 may have difficulty getting up and running after an update to this version. Thus, it is recommended to skip Libplanet 0.51.0 for deployment if possible.

Backward-incompatible API changes

  • BlockChain<T>() no longer accepts an IStore where IStore.GetCanonicalChainId() is null. For on-the-fly BlockChain<T> creation from scratch, use BlockChain<T>.Create() factory method instead. [#2863]
  • BlockChain<T>.Append() no longer accepts a genesis Block<T> (i.e. any Block<T> with an index of 0). [#2863]
  • BlockChain<T>() now throws an ArgumentException if provided IStore does not have its canonical chain id set or provided chain id is not found. [#1486, #2585, #2889]
  • Added IStore.GetChainBlockCommit() and IStore.PutChainBlockCommit() interface methods. [#2878, #2894]

Added APIs

  • Added BlockChain<T>.Create() factory method for creating a BlockChain<T> with an empty IStore. [#2863]

Behavioral changes

  • Changed BlockChain<T>.Fork() to copy BlockCommit for its newly forked BlockChain<T>.Tip. [#2878, #2894]
libplanet - Libplanet 0.51.1

Published by github-actions[bot] over 1 year ago

Released on March 13, 2023.

Bug fixes

  • (Libplanet.Net) Fixed a bug where ActionExecutionState hadn't generated correctly because of wrong TotalBlockCount. [#2917]
libplanet - Libplanet 0.50.2

Published by github-actions[bot] over 1 year ago

Released on March 9, 2023.

  • Added PolymorphicAction<T>.ActionTypeLoader static property to provide a way to configure action type loader to be used in PolymorphicAction<T>. [#2875]
libplanet - Libplanet 0.51.0

Published by github-actions[bot] over 1 year ago

Released on March 7, 2023.

Since 0.51.0, we officially provide @planetarium/account, an npm package for providing measures to represent accounts for apps developed with Libplanet in JavaScript/TypeScript. Note that the feature set is being actively developed, and the specification might change in the near future.

Deprecated APIs

  • Removed TotalDifficultyComparer class. [#2872]
  • Removed IBlockPolicy<T>.GetNextBlockDifficulty() interface method and all its implementations. [#2872]
  • Removed IBlockPolicy.TotalDifficulty interface property and its implementations. [#2872]
  • Removed all total difficulty related parameters. [#2872]
  • Removed IBlockPolicy.Difficulty interface property and its implementations. [#2872]
  • Removed IPreEvaluationBlockHeader.Nonce interface property and its implementations. [#2872]
  • Removed InvalidBlockTotalDifficultyException class. [#2872]
  • Removed InvalidBlockDifficultyException class. [#2872]
  • Removed BlockChain<T>.MakeGenesisBlock() and BlockChain<T>.MineBlock() methods. [#2872]
  • Removed HashAlgorithmType class. [#2872]
  • Removed PreEvaluationBlock<T>(IBlockContent<T>) constructor. [#2872]
  • Removed IBlockPolicy.GetMinBlockProtocolVersion() interface method. [#2872]

Backward-incompatible API changes

  • Added LastCommit property to IBlockMetadata. [#2872]
  • Bumped BlockMetadata.CurrentProtocolVersion to 4. [#2872]
  • Changed IPreEvaluationBlockHeader.PreEvaluationHash type from ImmutableArray<byte> to HashDigest<SHA256>. [#2872]
  • Added IStore.GetBlockCommit(BlockHash) method. [#2872]
  • Added IStore.PutBlockCommit(BlockCommit) method. [#2872]
  • Added IStore.DeleteBlockCommit(BlockHash) method. [#2872]
  • Added IStore.GetBlockCommitHashes() method. [#2872]
  • BlockMetadata.MakeCandidateData() now uses a SHA256 hash of LastCommit for creating a candidate data for PreEvaluationBlockHeader<T>. Due to this change, PreEvaluationHash results different with previous block hash computation if the BlockMetadata.LastCommit is not null. [#2872]
  • (Libplanet.Net) Removed SwarmOptions.StaticPeers. [#2872]
  • Changed BlockPolicy<T>() constructor not to take Func<long, int> type parameter named getMinBlockProtocolVersion. [#2872]

Backward-incompatible network protocol changes

  • (Libplanet.Net) Values for Message.MessageType are updated to use entirely different values. [#2872]

Added APIs

  • Added VoteFlag enum. [#2872]
  • Added IVoteMetadata interface. [#2872]
  • Added VoteMetadata class. [#2872]
  • Added Vote class. [#2872]
  • Added BlockContent.Propose() method. [#2872]
  • Added BlockCommit class. [#2872]
  • Added BlockChain.ProposeGenesisBlock() static method. [#2872]
  • Added BlockChain.ProposeBlock() method. [#2872]
  • Added BlockCommitExtensions class. [#2872]
  • Added ContextTimeoutOption class. [#2872]
  • Added BlockMarshaler.UnmarshalBlockHash() method. [#2872]
  • Added BlockChain<T>.GetBlockCommit() method. [#2872]
  • Added InvalidBlockCommitException class. [#2872]
  • Added BlockChain<T>.ValidateBlockCommit() method. [#2872]
  • (Libplanet.Net) Added IReactor interface. [#2872]
  • (Libplanet.Net) Added ConsensusReactor class which inherits IReactor interface. [#2872]
  • (Libplanet.Net) Added ConsensusContext class. [#2872]
  • (Libplanet.Net) Added Context class. [#2872]
  • (Libplanet.Net) Added Step enum. [#2872]
  • (Libplanet.Net) Added ConsensusMessage abstract class which inherits Message abstract class. And added classes which implements ConsensusMessage abstract class. [#2872]
    • Added ConsensusProposal class.
    • Added ConsensusVote class.
    • Added ConsensusCommit class.
  • (Libplanet.Net) Added enumeration items to MessageType enum. [#2872]
    • Added ConsensusProposal of value 0x40.
    • Added ConsensusVote of value 0x41.
    • Added ConsensusCommit of value 0x42.
  • (Libplanet.Net) Added ConsensusReactorOption struct. [#2872]
  • (Libplanet.Net) Added InvalidConsensusMessageException class. [#2872]
  • (Libplanet.Net) Added InvalidHeightIncreasingException class. [#2872]
  • (Libplanet.Net) Added Message.Id property. [#2872]
  • (Libplanet.Net) Added Gossip class. [#2872]
  • (Libplanet.Net) Added Proposal class. [#2872]
  • (Libplanet.Net) Added ProposalMetadata class. [#2872]
  • (Libplanet.Net) Added NetMQMessageCodec.ParseMessageType(). [#2872]
  • (Libplanet.Explorer) Added BoundPeerType class. [#2872]
  • (Libplanet.Explorer) Added BlockCommitType class. [#2872]
  • (Libplanet.Explorer) Added VoteFlagType class. [#2872]
  • (Libplanet.Explorer) Added VoteType class. [#2872]
  • (Libplanet.Explorer) Added BlockCommitType as a return of BlockQuery. [#2872]
  • Added PolymorphicAction<T>.ActionTypeLoader static property to provide a way to configure action type loader to be used in PolymorphicAction<T>. [#2873]

Behavioral changes

  • PreEvaluationBlockHeader() constructor became to throw InvalidBlockLastCommitException when its metadata's LastCommit is invalid. [#2872]
  • BlockChain<T>.Append() has new parameter BlockCommit blockCommit, which is a set of commits for given block. BlockCommit is used for checks whether a block is committed in consensus. [#2872]
  • BlockChain<T>.Append() method became to throw InvalidBlockCommitException when the given BlockCommit is invalid with given block. [#2872]

Bug fixes

  • (Libplanet.Explorer) Fixed a bug where stateQuery hadn't work correctly in some situations. [#2872]

Dependencies

CLI tools

libplanet - Libplanet 0.50.1

Published by dahlia over 1 year ago

Released on March 6, 2023.

libplanet - Libplanet 0.50.0

Published by dahlia over 1 year ago

Released on February 27, 2023.

Backward-incompatible API changes

  • Added Message.Content property. [#2772, #2831]
  • Some properties and enum of Message class are removed and moved to MessageContent class. [#2772, #2831]
    • Removed Message.Type property.
    • Removed Message.DateField property.
    • Removed Message.MessageType enum.
  • ITransport interface and its implementations overhauled. [#2772, #2831]
    • ITransport.SendMessageAsync(BoundPeer, Message, TimeSpan?, CancellationToken) method has changed to ITransport.SendMessageAsync(BoundPeer, MessageContent, TimeSpan?, int, bool, CancellationToken).
    • ITransport.SendMessageAsync(BoundPeer, Message, TimeSpan?, CancellationToken) method has changed to ITransport.SendMessageAsync(BoundPeer, MessageContent, TimeSpan?, int, bool, CancellationToken).
    • ITransport.BroadcastMessage(IEnumerable<BoundPeer>, Message) method has changed to ITransport.BroadcastMessage(IEnumerable<BoundPeer>, MessageContent).
    • ITransport.ReplyMessageAsync(Message, CancellationToken) method has changed to ITransport.ReplyMessageAsync(MessageContent, byte[], CancellationToken).
  • Removed InvalidMessageException class. Instead, added InvalidMessageContentException class. [#2772, #2831]

Added APIs

  • Added MessageContent class. [#2772, #2831]
    • All messages (e.g. PingMsg) became to inherit MessageContent (were Message).

Behavioral changes

  • IBlockPolicy is no longer enforced for genesis Block<T>s. [#2845]
libplanet - Libplanet 0.49.2

Published by github-actions[bot] over 1 year ago

Released on March 3, 2023.

  • General logging changes for better comprehension. [#2874]
libplanet - Libplanet 0.49.1

Published by github-actions[bot] over 1 year ago

Released on February 24, 2023.

  • (Libplanet.Net) Reduced logging due output being too verbose. [#2849]
libplanet - Libplanet 0.49.0

Published by github-actions[bot] over 1 year ago

Released on February 20, 2023.

Backward-incompatible API changes

  • (Libplanet.Net) Changed BlockCandidateTable<T>.Add(BlockHeader, IEnumerable<Block<T>>) to BlockCandidateTable<T>.Add(BlockHeader, Branch<T>). [#2822]
  • (Libplanet.Net) Changed the return type of BlockCandidateTable<T>.GetCurrentRoundCandidate() from List<Block<T>>? to Branch<T>?. [#2822]

Added APIs

  • Added Branch<T> class to represent a sequence of consecutive Block<T>s. [#2822]

Behavioral changes

  • Swarm<T> became not to spawn multiple task for process BlockDemand for the same BoundPeer. [#2808, #2814]

Bug fixes

  • Fixed a bug where NetMQTransport's overall throughput had been dropped when hostname resolving for some peers was delayed. [#2817]
libplanet - Libplanet 0.46.2

Published by github-actions[bot] over 1 year ago

Released on February 16th, 2023.

  • Fix memory issues when preloading. [#2804]
libplanet - Libplanet 0.48.0

Published by github-actions[bot] over 1 year ago

Released on Februrary 14, 2023.

Backward-incompatible API changes

  • Removed BlockCandidateTable<T>.Any() method. [#2794]
  • Changed the return type from SortedList<long, Block<T>>? to List<Block<T>>? for BlockCandidateTable<T>.GetCurrentRoundCandidate() method. [#2794]
  • Changed the behavior of BlockCandidateTable<T>.Add() method. [#2794]
  • Changed TxId to implement IBencodable interface. [#2795]

Added APIs

  • Added Serializable attribute back to Address. [#2798]
  • (Libplanet.Net) Added Serializable attribute back to BoundPeer. [#2798]
  • (@planetarium/tx) Added encodeUnsignedTxWithCustomActions() function. [#2805]
  • (@planetarium/tx) Added CustomAction type. [#2805]
  • (@planetarium/tx) Added UnsignedTxWithCustomActions type. [#2805]

Behavioral changes

  • (Libplanet.Net) Changed Swarm<T> to respond to a GetBlocksMsg request with an empty BlocksMsg if no requested Block<T>s are found. [#2800, #2803]

Dependencies

  • (@planetarium/tx) Because globalThis.crypto API is available since Node.js version 19.0.0, it now explicitly requires 19.0.0 or later. [#2805]