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.34.0

Published by github-actions[bot] over 2 years ago

Released on May 13th, 2022.

Added APIs

  • Class DataModel added. When inherited, this class assists in automatic encoding and decoding to and from Bencodex.Types.Dictionary. [#1932, #1935]

Behavioral changes

  • TxPolicyViolationException and InvalidTxException now have a new constructor that takes an Exception as their Exception.InnerException. [#1830, #1912, #1916]

CLI tools

  • Added planet key sign to sign a message. [#1920]
libplanet - Libplanet 0.33.1

Published by github-actions[bot] over 2 years ago

Released on April 28th, 2022.

Behavioral changes

  • Transaction<T>'s relatively heavy policy validation is deferred until after its nonce validation in order to speed up gathering Transaction<T>s when mining. [#1924]
libplanet - Libplanet 0.33.0

Published by github-actions[bot] over 2 years ago

Released on April 19th, 2022.

Backward-incompatible API changes

  • (Libplanet.Net) IMessageCodec and its implementations NetMQMessageCodec and TcpMessageCodec overhauled. [#1906]
    • AppProtocolVersion type parameter added to IMessageCodec.Encode().
    • Both NetMQMessageCodec() and TcpMessageCodec() constructors are made parameterless.
    • IMessageCodec.Decode() no longer throws InvalidMessageTimestampException or DifferentAppProtocolVersionException.
  • (Libplanet.Net) Irrelevant context related properties removed from InvalidMessageTimestampException and DifferentAppProtocolVersionException. [#1906]
    • InvalidMessageTimestampException.Peer property removed.
    • DifferentAppProtocolVersionException.Peer property removed.
    • DifferentAppProtocolVersionException.Identity property removed.
  • (Libplanet.Net) Both MessageValidator.ValidateTimestamp() and MessageValidator.ValidateAppProtocolVersion() now only accepts single Message type parameter. [#1906]
  • (Libplanet.Net) SendMessageFailedException changed to SendMessageFailException. [#1911]
  • (Libplanet.Net) ITransport exception handling overhauled. [#1911]
    • ITransport.SendMessageAsync() now only throws CommunicationFailException for a normal failure of sending and receiving Messages; old exceptions such as TimeoutException, InvalidMessageSignatureException, etc. are attached to InnerException property to a thrown CommunicationFailException.
    • InvalidCredentialException, InvalidMagicCookieException, InvalidMessageSignatureException, SendMessageFailException no longer have public constructors.

Added APIs

  • (Libplanet.Net) InvalidCredentialException class added. [#1904, #1905]
  • (Libplanet.Net) CommunicationFailException class added. [#1911]

Behavioral changes

  • Inner logic of ByteUtil.CalculateHashCode(byte[] bytes) has modified. [#1866, #1891]
  • (Libplanet.Net) IMessageCodec.Encode() now requires a matching PrivateKey to be provided for Peer. [#1904, #1905]

Dependencies

CLI tools

libplanet - Libplanet 0.32.1

Published by github-actions[bot] over 2 years ago

Released on April 8th, 2022.

Behavioral changes

  • (Libplanet.Net) ITransport's behavior rolled back to send replies with DifferentVersion type Message to a Peer with a different AppProtocolVersion regardless of whether the APV from Peer is signed by a trusted source or not. [#1900]
libplanet - Libplanet 0.32.0

Published by github-actions[bot] over 2 years ago

Released on April 8th, 2022.

Backward-incompatible API changes

  • Added IStore.PruneOutdatedChains(bool noopWithoutCanon) method. [#1874, #1878]
  • IMessageCodec interface and its implementations overhauled. [#1890]
    • Removed AppProtocolVersion version parameter from IMessageCodec.Encode().
    • Removed Action appProtocolVersionValidator parameter from IMessageCodec.Decode().
    • Both TcpMessageCodec() and NetMQMessageCodec() now takes additional parameters for setting up its MessageValidator instance for running context.
  • DifferentAppProtocolVersionEncountered delegate now returns void. [#1885, #1890]

Added APIs

  • (Libplanet.Net) DifferentAppProtocolVersionException is made public. [#1889]
  • (Libplanet.Net) InvalidMessageSignatureException and InvalidMessageTimestampException gained additional properties. [#1889]
  • (Libplanet.Net) MessageValidator helper class introduced. [#1890]

Behavioral changes

  • (Libplanet.Net) Internal cache size of a KBucket is now capped. [#1879]
  • (Libplanet.Net) IMessageCodec now never decodes a Message with a different AppProtocolVersion from the local version. [#1885, #1890]
  • (Libplanet.Net) ITransport no longer replies with DifferentVersion type Message to a Peer with a different AppProtocolVersion that is not signed by a trusted source. [#1890]

Bug fixes

  • (Libplanet.Net) Internal dictionaries of a KBucket are made to be concurrent. [#1872, #1879]
  • (Libplanet.Net) DifferentAppProtocolVersionException and InvalidMessageSignatureException can now be serialized and deserialized. [#1889]
libplanet - Libplanet 0.31.0

Published by github-actions[bot] over 2 years ago

Released on March 31, 2022.

Backward-incompatible API changes

  • (Libplanet.Net) Existing method name Kademlia.CalculateDistance() changed to Kademlia.CalculateDifference() to better indicate its behavior. [#1877]
  • (Libplanet.Net) Kademlia.CalculateDistance() method reimplemented with return type int. [#1877]

Bug fixes

  • (Libplanet.Stun) Increased the number of internal proxies to increase the inbound network traffic throughput of a node when using a TurnClient. [#1864, #1876]
libplanet - Libplanet 0.30.0

Published by github-actions[bot] over 2 years ago

Released on March 24, 2022.

Backward-incompatible storage format changes

  • (Libplanet.RocksDBStore) RocksDBStore became not to use column families to manage chain ids. Instead, chain id is concatenated into key prefix. [#1862]

CLI tools

  • Added planet store migrate-index for index database migration (from column families based to key-prefix). [#1862]
libplanet - Libplanet 0.29.0

Published by github-actions[bot] over 2 years ago

Released on March 17, 2022.

Backward-incompatible API changes

  • (Libplanet.Net) SwarmOptions.MessageLifespan property changed to SwarmOptions.MessageTimestampBuffer. [#1828, #1831]
  • (Libplanet.Net) Unused parameter dealerSocketLifetime removed from NetMQTransport(). [#1832]
  • (Libplanet.Net) Old ITransport.SendMessageAsync() method is deprecated. ITransport.SendMessageWithReplyAsync() methods are renamed as ITransport.SendMessageAsync(). [#1849]

Behavioral changes

  • (Libplanet.Net) Default value of SwarmOptions.MessageTimestampBuffer is set to 60 seconds instead of null. [#1828, #1831]
  • (Libplanet.Net) Acceptable timestamp range for Messages, when non-null SwarmOptions.MessageTimestampBuffer is provided, has changed to allow Messages with future timestamps. [#1828, #1831]
  • (Libplanet.Net) Swarm<T> now replies Pongs to received TxIds and BlockHeaderMessage messages. [#1845]
libplanet - Libplanet 0.28.2

Published by github-actions[bot] over 2 years ago

Released on March 15, 2022.

  • (Libplanet.RocksDBStore) RocksDBStore.GetBlockDigest() became to silently return null with no misleading error log when it's asked a non-existent block hash. [#1500, #1852]
libplanet - Libplanet 0.28.1

Published by github-actions[bot] over 2 years ago

Released on March 3, 2022.

  • Fixed an evaluation log to output IPreEvaluationBlock<T>.PreEvaluationHash as a hex formatted string. [#1835, #1837]
  • (Libplanet.Net) Fixed a bug where some messages could not be sent using NetMQTransport due to premature DealerSocket disposal. [#1836, #1839]
libplanet - Libplanet 0.28.0

Published by github-actions[bot] over 2 years ago

Released on February 23, 2022.

Deprecated APIs

Backward-incompatible API changes

  • The return type of MerkleTrieExtensions.DifferentNodes() became IEnumerable<Tuple<KeyBytes, IValue, IValue>> from IEnumerable<IGrouping<string, (HashDigest<SHA256> Root, IValue Value)>>. [#1729]
  • (Libplanet.Extensions.Cocona) Replaced string? passphrase = null parameter of methods belonging KeyCommand and ApvCommand with PassphraseParameters passphrase. [#1593, #1823]
  • (Libplanet.Extensions.Cocona) Replaced KeyCommand.UnprotectKey(Guid keyId, string? passphrase = null) method with UnprotectedKey(Guid, PassphraseParameters, bool) method. [#1593, #1823]
  • (Libplanet.Net) IMessageCodec<T>.Decode() now throws InvalidMessageSignatureException and InvalidMessageTimestampException instead of InvalidMessageException and InvalidTimestampException respectively. [#1771]
  • (Libplanet.Net) Added long tipDeltaThreshold = 25L option to Swarm<T>.PreloadAsync() method. [#1775, #1777, #1779]

Backward-incompatible network protocol changes

  • The Block<T>.CurrentProtocolVersion is bumped from 2 to 3. [#1322, #1323, #1518]

Backward-incompatible storage format changes

Added APIs

  • (Libplanet.Extensions.Cocona) Added PassphraseParameters class. [#1593, #1823]
  • (Libplanet.Extensions.Cocona) Added KeyCommand.UnprotectKey(Guid keyId, PassphraseParameters passphrase, bool ignoreStdin = false) method. [#1593, #1823]
  • (Libplanet.Net) Added MessageSendFailedException class. [#1781, #1786]

Behavioral changes

  • Block<T>.Transactions is ordered using a different scheme for evaluation due to protocol version bump. [#1322, #1323, #1518]
  • (Libplanet.Net) NetMQTransport.SendMessageWithReplyAsync() should now complete its process within given timeframe timeout argument instead of possibly taking longer on some edge cases when waiting for multiple replies. [#1734, #1789]
  • ActionEvaluator<T>.Evaluate() method became to log message directly instead of other methods that use it. [#1773]
  • (Libplanet.Net) NetMQTransport.DoBroadcast now uses NetMQTransport.SendMessageAsync() internally instead of using NetMQ directly. [#1722, #1824]

Bug fixes

  • (Libplanet.Net) Fixed a leak in handling DealerSockets inside NetMQTransport.DoBroadcast() method. [#1819, #1825]

Dependencies

  • (Libplanet.Extensions.Cocona) Upgraded Cocona.Lite from 1.5.* to 1.6.*. [#1593, #1823]

CLI tools

  • All planet subcommands taking passphrase now have --passphrase-file option besides -p/--passphrase option to read it from the specified file or standard input (-) instead. [#1593, #1823]
  • Fixed a bug where planet subcommands taking passphrase had unexpectedly terminated with an uncaught InvalidOperationException when it's not associated to any terminal device (tty), i.e., piped. [#1593, #1823]
  • planet mpt diff command became to output the key and its values in one line as JSON whenever a different key is found, than it outputs all of the different nodes at once. [#1729]
libplanet - Libplanet 0.27.7

Published by github-actions[bot] over 2 years ago

Released on February 18, 2022.

  • Fixed HashDigest<T>.DeriveFrom(ReadOnlySpan<byte>) method's bug where it had thrown IndexOutOfRangeException for the input longer or shorter than HashDigest<T>.Size on .NET Standard 2.0. [#1706, #1815]
  • Fixed HashDigest<T>.DeriveFrom(ReadOnlySpan<byte>) method's bug where it had returned the wrong digest on .NET Standard 2.0. [#1706, #1815]
libplanet - Libplanet 0.26.6

Published by github-actions[bot] over 2 years ago

Released on February 18, 2022.

  • Fixed HashDigest<T>.DeriveFrom(ReadOnlySpan<byte>) method's bug where it had thrown IndexOutOfRangeException for the input longer or shorter than HashDigest<T>.Size on .NET Standard 2.0. [#1706, #1815]
  • Fixed HashDigest<T>.DeriveFrom(ReadOnlySpan<byte>) method's bug where it had returned the wrong digest on .NET Standard 2.0. [#1706, #1815]
libplanet - Libplanet 0.25.5

Published by github-actions[bot] over 2 years ago

Released on February 18, 2022.

  • Fixed HashDigest<T>.DeriveFrom(ReadOnlySpan<byte>) method's bug where it had thrown IndexOutOfRangeException for the input longer or shorter than HashDigest<T>.Size on .NET Standard 2.0. [#1706, #1815]
  • Fixed HashDigest<T>.DeriveFrom(ReadOnlySpan<byte>) method's bug where it had returned the wrong digest on .NET Standard 2.0. [#1706, #1815]
libplanet - Libplanet 0.27.6

Published by github-actions[bot] over 2 years ago

Released on February 18, 2022.

  • (Libplanet.Net) Fixed a bug where Swarm<T>.PreloadAsync() had not thrown OperationCanceledException even cancellation was requested. [#1547, #1796]
  • Fixed ThreadStateException thrown by NonblockRenderer<T> and NonblockActionRenderer<T> classes. [#1772, #1810]
libplanet - Libplanet 0.26.5

Published by github-actions[bot] over 2 years ago

Released on February 18, 2022.

  • Fixed a bug where Swarm<T>.PreloadAsync() had not thrown OperationCanceledException even cancellation was requested. [#1547, #1796]
  • Fixed ThreadStateException thrown by NonblockRenderer<T> and NonblockActionRenderer<T> classes. [#1772, #1810]
libplanet - Libplanet 0.27.5

Published by github-actions[bot] over 2 years ago

Released on February 16, 2022.

  • Upgraded Planetarium.RocksDbSharp from 6.2.4-planetarium to 6.2.6-planetarium. [#1791, #1803]
  • (Libplanet.Net) Additional logs tagged Metric to monitor ITransport behavior. [#1802]
libplanet - Libplanet 0.26.4

Published by github-actions[bot] over 2 years ago

Released on February 16, 2022.

  • Upgraded Planetarium.RocksDbSharp from 6.2.4-planetarium to 6.2.6-planetarium. [#1791, #1803]
  • Additional logs tagged Metric to monitor ITransport behavior. [#1802]
libplanet - Libplanet 0.27.4

Published by github-actions[bot] over 2 years ago

Released on February 16, 2022.

  • Fixed @planetarium/cli npm package's bug where installation had not worked since 0.27.0. [#1790, #1799]
  • (Libplanet.Net) Return the fixed races between Swarm<T>'s dual systems for block synchronization (polling and event-driven in parallel) on updating chain by serializing the post-download process which is common for both synchronization mechanisms. [#1731, #1798]
libplanet - Libplanet 0.27.3

Published by github-actions[bot] over 2 years ago

Released on February 11, 2022.

  • (Libplanet.Net) Swarm<T>.CompleteBlockSync() changed back, reverting the behavior implemented in #1759 to fixed races between Swarm<T>'s dual systems for block synchronization (polling and event-driven in parallel) on updating chain [#1797]