Blockchain in C#/.NET for on-chain, decentralized gaming
LGPL-2.1 License
Bot releases are visible (Hide)
Published by github-actions[bot] over 2 years ago
Published by github-actions[bot] over 2 years ago
Published by github-actions[bot] over 2 years ago
Released on February 4, 2022.
Swarm<T>.PreloadAsync()
method became to catch up recent blocks until the local tip is close enough to the topmost tip among peers. [#1775]
Published by github-actions[bot] over 2 years ago
Released on January 26, 2022.
Libplanet.Net
namespace from Libplanet assembly to Libplanet.Net assembly. [#1421, #1760]
NetMQTransport()
constructor has modified. [#1741, #1744]
RoutingTable table
and int minimumBroadcastTarget
parameters.TimeSpan? dealerSocketLifetime
parameter.RoutingTable table
and int minimumBroadcastTarget
parameters from TcpTransport()
constructor. [#1741, #1744]
ITransport.BroadcastMessage(Address?, Message)
method. Instead, added ITransport.BroadcastMessage(IEnumerable<BoundPeer>, Message)
method. [#1741, #1744]
TrieStateStore.CopyStates()
method. [#1653, #1691]
NullBlockPolicy<T>
class. [#1531, #1748]
Message
abstract class. [#1754, #1756]
Ping
class.Pong
class.FindNeighbors
class.Neighbors
class.DifferentVersion
class.MerkleTrie.Get()
method now finds multiple states in parallel. [#1743]
DealerSocket
s used for broadcasting messages in NetMQTransport
became not to be disposed right after corresponding peer is removed from the routing table. Instead, it will be removed after a certain amount of time. [#1741, #1744]
NetMQTransport
no longer attempts to retry failed communications. [#1751, #1752]
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, #1759]
Metric
added to measure evaluation time for individual Transaction<T>
s. [#1755, #1758]
Published by github-actions[bot] over 2 years ago
Released on January 26, 2022.
ActionEvaluator<T>
's logs had been ignored due to its initialization timings. [#1764]
Transaction<T>
s before evaluating them are now measured and logged. [#1764]
Published by github-actions[bot] over 2 years ago
Released on January 20, 2022.
NetMQTransport<T>
for consistency and readability. [#1735]
Published by github-actions[bot] almost 3 years ago
Released on January 18, 2022.
IValue StateCompleter<T>(BlockChain<T>, BlockHash, Address)
delegate with IReadOnlyList<IValue?> StateCompleter<T>(BlockChain<T>, BlockHash, IReadOnlyList<Address>)
delegate. [#1703]
IAccountStateDelta.GetStates(IReadOnlyList<Address>)
method. [#1703]
IValue AccountStateGetter(Address)
delegate with IReadOnlyList<IValue?> AccountStateGetter(IReadOnlyList<Address>)
delegate. [#1703]
StateGetter<T>
delegate. [#1703]
BalanceGetter<T>
delegate. [#1703]
StateGetter<T> stateGetter
and BalanceGetter<T> balanceGetter
parameters from ActionEvaluator<T>()
constructor. [#1703]
IBlockChainStates<T> blockChainStates
parameter to ActionEvaluator<T>()
constructor. [#1703]
ITrie.TryGet()
with ITrie.Get()
method. [#1703]
StateStoreExtensions.GetState()
static method with GetStates()
static method. [#1703]
nullable
context enabled for IProtocol
interface and Kademlia
, KademliaProtocol
, and RoutingTable
classes. [#1692]
RoutingTable.Neighbors(Peer, int, bool)
changed to RoutingTable.Neighbors(BoundPeer, int, bool)
. As a result, RoutingTable
class now only explicitly deals with BoundPeer
s. [#1692]
BlockChain<T>.StageTransaction()
, IStagePolicy.Stage()
, and IStagePolicy.Unstage()
now all return bool
to indicate whether staging was successful or not. [#1710]
BlockChain<T>.GetStates()
method. [#1703]
IBlockChainStates<T>
interface. [#1703]
BlockChain<T>
now implements IBlockChainStates<T>
.StateStoreExtensions.GetStates()
static method. [#1703]
Swarm<T>.FillBlocksAsync()
's block sync. [#1663, #1699]
Swarm<T>
synchronizes the attached BlockChain<T>
with peers became more performant by splitting downloading and appending blocks into two parallel tasks.Peer
s when discovering a Peer
through KademliaProtocol
. [#1692]
Published by github-actions[bot] almost 3 years ago
Published by github-actions[bot] almost 3 years ago
Released on January 14, 2022.
Swarm<T>
had been stopped suddenly. [#1715]
Published by github-actions[bot] almost 3 years ago
Released on January 11, 2022.
TxCompletion<TPeer, TAction>
failed to fetch transactions from other peers. [#1704]
TxCompletion<TPeer, TAction>
, instead of maintaining single RequestTxsFromPeerAsync()
task for each peer, a new RequestTxsFromPeerAsync()
task is spawned every time a new demand is received. [#1704]
Published by github-actions[bot] almost 3 years ago
Published by github-actions[bot] almost 3 years ago
Released on January 5, 2022.
HashDigest<T>(ImmutableArray<byte>)
constructor with HashDigest<T>(in ImmutableArray<byte>)
constructor. [#1678]
IKeyValueStore
's key type became KeyBytes
(was byte[]
). [#1678]
IKeyValueStore.Get(byte[])
method with Get(in KeyBytes)
method.IKeyValueStore.Set(byte[], byte[])
method with Set(in KeyBytes, byte[])
method.IKeyValueStore.Set(IDictionary<byte[], byte[]>)
method with Set(IDictionary<KeyBytes, byte[]>)
method.IKeyValueStore.Delete(byte[])
method with Delete(in KeyBytes)
method.IKeyValueStore.Exists(byte[])
method with Exists(in KeyBytes)
method.IKeyValueStore.ListKeys()
method's return type became IEnumerable<KeyBytes>
(was IEnumerable<byte[]>
).ITrie
's key type became KeyBytes
(was byte[]
). [#1689]
ITrie.Set(byte[], IValue)
method with Set(in KeyBytes, IValue)
method.ITrie.TryGet(byte[], out IValue?)
method with TryGet(in KeyBytes, out IValue?)
method.MerkleTrieExtensions.ListAllStates()
static method became IEnumerable<KeyValuePair<KeyBytes, IValue>>
(was IEnumerable<KeyValuePair<ImmutableArray<byte>, IValue>>
). [#1653]
IKeyValueStore.Get(IEnumerable<KeyBytes>)
method. [#1678]
IKeyValueStore.Delete(IEnumerable<KeyBytes>)
method. [#1678]
nullable
context enabled for Peer
and BoundPeer
classes. All public constructors now explicitly take non-nullable parameters. [#1679]
Peer
and BoundPeer
are now non-nullable except for Peer.PublicIPAddress
.HashDigest<T>.DeriveFrom(ReadOnlySpan<byte>)
overloaded static method with ohter new overloads. [#1680]
Sender
property from Messages.TxIds
and Messages.TxIds
's MessageType
value bumped to 0x31
. [#1681]
KeyBytes
readonly struct. [#1678]
HashDigest<T>(in ImmutableArray<byte>)
constructor. [#1678]
HashDigest<T>.DeriveFrom(byte[])
overloaded static method. [#1680]
HashDigest<T>.DeriveFrom(ImmutableArray<byte>)
overloaded static method. [#1680]
HashDigest<T>.DeriveFrom(ReadOnlySpan<byte>)
overloaded static method. [#1680]
StateStoreExtensions.EncodeKey()
static method. [#1689]
StateStoreExtensions.DecodeKey()
static method. [#1689]
Published by github-actions[bot] almost 3 years ago
Published by github-actions[bot] almost 3 years ago
Released on December 24, 2021.
NonblockRenderer<T>
and NonblockActionRenderer<T>
where they had thrown ThreadStateException
when any render events occured after disposed. [#1682]
Published by github-actions[bot] almost 3 years ago
Released on December 16, 2021.
Transaction<T>
s were unstaged when they were not supposed to. [#1672]
Published by github-actions[bot] almost 3 years ago
Released on December 16, 2021.
IStagePolicy<T>
's interface
methods updated. Notably, all IStagePolicy<T>
now accept BlockChain<T>
as its parameter. [#1648]
Get(BlockChain<T> blockChain, TxId id, bool includeInstaged)
changed to Get(BlockChain<T> blockChain, TxId id, bool filtered = true)
.Iterate()
changed to Iterate(BlockChain<T> blockChain, bool filtered = true)
.GetNextTxNonce(Address address, long minedTxs)
changed to GetNextTxNonce(BlockChain<T> blockChain, Address address)
.IStagePolicy<T>
and its default implementation VolatileStagePolicy<T>
is overhauled. [#1648]
IStagePolicy<T>.Iterate()
no longer guarantees any kind of ordering.IStagePolicy<T>.Ignore()
now also unstages the Transaction<T>
.VolatileStagePolicy<T>
now holds every previously known unconfirmed Transaction<T>
regardless of its staging/unstaging history unless it is expired or ignored.Metric
added to measure execution time for BlockChain<T>.FindNextHashes()
. [#1669]
TxCompletion
had broadcasted invalid transactions. [#1661]
Published by github-actions[bot] almost 3 years ago
Released on December 13, 2021.
Published by github-actions[bot] almost 3 years ago
Released on December 13, 2021.
BlockChain<T>.GetState()
method to improve parallelism. [#1657]
Swarm<T>
's block synchronization. [#1657]
Swarm<T>
had swapped to improper chain. [#1657]
RocksDBStore.ForkBlockIndexes()
had created temporary chains unnecessarily. [#1657]
Published by github-actions[bot] almost 3 years ago
Published by github-actions[bot] almost 3 years ago
Released on December 8, 2021.
From this version Libplanrt can be built on arm64 machines including Apple Silicon (aarch64-apple-darwin).
PreEvaluationBlock<T>.DetermineStateRootHash(BlockChain<T>, StateCompleterSet<T>, out IImmutableDictionary<string, IValue>)
overloaded method. [#1636]
PreEvaluationBlock<T>.DetermineStateRootHash(IAction?, IStateStore, out IImmutableDictionary<string, IValue>)
overloaded method. [#1636]
except
for KBucket.GetRandomPeer()
now defaults to null
. [#1631]
ArrayEqualityComparer<T>
class. [#1636]
System.Collections.Generic.SortedDictionary<TKey, TValue>
System.Collections.Generic.SortedSet<T>
System.Collections.Immutable.ImmutableSortedDictionary<TKey, TValue>
System.Collections.Immutable.ImmutableSortedSet<T>
Bencodex.Types.Dictionary
(which became to guarantee enumeration order since Bencodex 0.4.0)KBucket.Head
and KBucket.Tail
now properly return null
if the bucket is empty instead of faulting. [#1631]
TxCompletion.Demand()
no longer requests Transaction<T>
s already in storage. [#1649]