Blockchain in C#/.NET for on-chain, decentralized gaming
LGPL-2.1 License
Bot releases are visible (Hide)
Published by github-actions[bot] about 2 years ago
Released on October 14, 2022.
Since 0.43.0, we officially provide @planetarium/tx, an npm package for creating unsigned transactions in JavaScript/TypeScript. Although it is still in experimental stage, which can build only unsigned transactions with a system action, its features will be added more in the future.
DateTimeOffset?
type parameter that allowed a creation of a genesis Block<T>
with specific timestamp from BlockChain<T>.MakeGenesisBlock()
. [#2321]
BlockMetadata
, BlockContent<T>
, PreEvaluationBlockHeader
, PreEvaluationBlock<T>
, BlockHeader
, and Block<T>
. [#2321]
BlockMetadata
has constructors BlockMetadata(IBlockMetadata)
and BlockMetadata(long, DateTimeOffset, PublicKey, long, BigInteger, BlockHash?, HashDigest<SHA256>)
.BlockContent
has constructors BlockContent<T>(IBlockMetadata, IEnumerable<Transaction<T>> transactions)
, BlockContent<T>(BlockMetadata)
and BlockContent<T>(BlockMetadata, IEnumerable<Trnasaction<T>> transactions)
.PreEvaluationBlockHeader
has constructors PreEvaluationBlockHeader(IPreEvaluationBlockHeader)
and PreEvaluationBlockHeader(BlockMetadata, (Nonce, ImmutableArray<byte>))
.PreEvaluationBlock<T>
has constructors PreEvaluationBlock<T>(IPreEvaluationBlockHeader, IEnumerable<Transaction<T>>)
and PreEvaluatoinBlock<T>(BlockContent<T>, (Nonce, ImmutableArray<byte>))
.BlockHeader
has constructors BlockHeader(IBlockHeader)
and BlockHeader(PreEvaluationBlockHeader, (HashDigest<SHA256>, ImmutableArray<byte>?, BlockHash))
.Block<T>
has constructors Block<T>(IBlockHeader, IEnumerable<Transaction<T>>)
and Block<T>(PreEvaluationBlock<T>, (HashDigest<SHA256>, ImmutableArray<byte>, BlockHash))
.BlockContent<T>
no longer inherits BlockMetadata
and PreEvaluationBlock<T>
no longer inherits PreEvaluationBlockHeader
. [#2321]
BlockMetadata
and BlockContent<T>
are made immutable. Their properties can no longer be assigned to. [#2321]
BlockMetadata
and BlockContent<T>
removed. [#2321]
Utils.DeserializeHumanReadable<T>()
static method became T?
(was T
). [#2322]
Mint
now implements IEquatable<Mint>
.Mint
now implements IEquatable<IAction>
.Transfer
now implements IEquatable<Transfer>
.Transfer
now implements IEquatable<IAction>
.IRoutingTable
interface. [#2046, #2229]
RoutingTable
now implements IRoutingTable
interface. [#2046, #2229]
ActionEvaluator<T>.GenerateRandomSeed()
static method. [#2131, #2236]
BlockMetadata
, PreEvaluationBlockHeader
, and BlockHeader
can be accessed from any "larger" type object through properties. [#2321]
BlockMetadata
can be accessed through BlockContent<T>.Metadata
or PreEvaluationBlockHeader.Metadata
.PreEvaluationBlockHeader
can be accessed through PreEvaluationBlock<T>.Header
or BlockHeader.Header
.BlockHeader
can be accessed thorugh Block<T>.Header
(this has not changed, but only listed here for completeness in narrative).updatedStates
, updatedFungibleAssets
, fungibleAssetsDelta
GraphQL fields to TxResultType
. [#2353]
nextNonce
query in TransactionQuery<T>
. [#2356, #2366]
System.Text.Json.JsonSerializer
as they now have their own custom converters. Note that these serializations are unavailable on Unity due to its incomplete reflection support. [#2294, #2322]
Address
became represented as a single hexadecimal string in JSON. [#2322]
BlockHash
became represented as a single hexadecimal string in JSON. [#2322]
Currency
became represented as an object with values in JSON. Note that it contains its Hash
and it throws JsonException
if a JSON object to deserialize has an inconsistent Hash
with other field values. [#2322]
FungibleAssetValue
became represented as an object with its Currency
object and Quantity
string. [#2322]
HashDigest<T>
became represented as a single hexadecimal string in JSON. [#2322]
Transaction<T>
became represented as an object with values in JSON. [#2294]
TxId
became represented as a single hexadecimal string in JSON. [#2322]
PlainValue
with type_id
field. [#2294]
GetHashCode()
and Equals(object)
methods now check value equality (rather than reference equality). [#2294]
ValidateAppProtocolVersion
became allow validation of different extra. [#2380]
IComparable.CompareTo()
and IComparable<T>.CompareTo()
for Address
are now accessible. [#2384]
planet tx
subcommand group. [#2294]
planet tx analyze
subcommand.planet tx help
subcommand.Published by github-actions[bot] about 2 years ago
Released on September 29, 2022.
TransactionQuery<T>
that bindSignature()
had errored if unsignedTransaction
has a system action. [#2358]
Published by github-actions[bot] about 2 years ago
Released on September 29, 2022.
TransactionQuery<T>
that bindSignature()
had errored if unsignedTransaction
has a system action. [#2358]
Published by github-actions[bot] about 2 years ago
Released on September 29, 2022.
TransactionQuery<T>
that bindSignature()
had errored if unsignedTransaction
has a system action. [#2358]
Published by github-actions[bot] about 2 years ago
Released on September 23, 2022.
Transaction<T>.ToBencodex(bool)
method had incorrectly serialized SystemAction
. [#2339]
Published by github-actions[bot] about 2 years ago
Released on September 23, 2022.
Transaction<T>.ToBencodex(bool)
method had incorrectly serialized SystemAction
. [#2339]
Published by github-actions[bot] about 2 years ago
Released on September 23, 2022.
Transaction<T>.ToBencodex(bool)
method had incorrectly serialized SystemAction
. [#2339]
Published by github-actions[bot] about 2 years ago
Released on September 19, 2022.
BlockChain<T>.MakeTransaction(PrivateKey, IEnumerable<T>, IImmutableSet<Address>, DateTimeOffset?)
method's actions
parameter to customActions
. [#2151, #2273]
IBlockPolicy.GetMaxBlockBytes()
to IBlockPolicy.GetMaxTransactionBytes()
. Behaviourally, this is now used as an upper limit for the encoded size of Block<T>.Transactions
instead of Block<T>
. [#2290, #2291]
Options.MaxBlockBytes
to Options.MaxTransactionsBytes
and Options.MaxGenesisBytes
to Options.MaxGenesisTransactionsBytes
.max-block-bytes
to max-transactions-bytes
and max-genesis-bytes
to max-genesis-transactions-bytes
.maxBlockBytes
changed to maxTransactionsBytes
.Address
now implements IEquatable<Address>
interface. [#2320]
TxId
now implements IEquatable<TxId>
interface. [#2320]
BlockChain<T>.MakeTransaction(PrivateKey, IAction, IImmutableSet<Address>, DateTimeOffset?)
overloaded method. [#2151, #2273]
GetInnerActionTypeName()
method. [#1910, #2189]
LibplanetExplorerSchema
class. [#2065, [#2198]]
Published by github-actions[bot] about 2 years ago
Released on September 13, 2022.
NetMQTransport
is not correctly disposed of due to NetMQTransport._router
already being stopped in prior to _router.Unbind()
call in NetMQTransport.Dispose()
. [#2311]
Published by github-actions[bot] about 2 years ago
Published by github-actions[bot] about 2 years ago
Released on August 31, 2022.
Transaction<T>.Create(long, PrivateKey, BlockHash?, IAction, IImmutableSet<Address>?, DateTimeOffset?)
method had thrown ArgumentNullException
with valid arguments. [#2268]
Published by github-actions[bot] about 2 years ago
Released on August 26, 2022.
NetMQTransport()
constructor. Use NetMQTransport.Create()
instead. [#2215]
TcpMessageCodec
class removed. [#2216]
TurnClient.IsConnectable()
method. [#2219]
TurnClient.BindProxies()
method. [#2219]
TurnClient()
constructor. Use TurnClient.Create()
instead. [#2219]
Peer
class. Use BoundPeer
instead. [#2233]
IStore
and its implementations. [#1538, #2201]
IterateTransactionIds()
DeleteTransaction()
CountTransactions()
Currency(string, byte, IImutableSet<Address>?)
constructor. [#2200]
Currency(string, byte, Address?)
constructor. [#2200]
Currency
that defines different kinds of Currency
. [#2200]
Currency.Capped(string, byte, (BigInteger, BigInteger), IImutableSet<Address>?)
static method which defines an instance of Currency
with a hard limit on the maximum minted supply.Currency.Capped(string, byte, (BigInteger, BigInteger), Address)
static method which defines an instance of Currency
with a hard limit on the maximum minted supply.Currency.Uncapped(string, byte, IImutableSet<Address>?)
static method which defines an instance of Currency
without an enforced maximum supply limit.Currency.Uncapped(string, byte, Address)
static method which defines an instance of Currency
without an enforced maximum supply limit.Currency.Legacy(string, byte, IImutableSet<Address>?)
static method which defines a legacy Currency
instance which is compatible with Currency
instances defined before total supply tracking support was introduced.Currency.Legacy(string, byte, Address)
static method which defines a legacy Currency
instance which is compatible with Currency
instances defined before total supply tracking support was introduced.Currency
instances defined in prior to the addition of total supply tracking on a live chain, you cannot modify the already-defined Currency
instances as a capped or uncapped Currency
but have to define them with Currency.Legacy()
as the new Currency kinds are internally backwards-incompatible with the legacy Currency
.IAccountStateDelta.TotalSupplyUpdatedCurrencies
property. [#915, #2200]
IAccountStateView.GetTotalSupply(Currency)
method. [#915, #2200]
IBlockChainStates<T>.GetTotalSupply(Currency, BlockHash, TotalSupplyStateCompleter<T>
method which gets the total supply of a Currency
in FungibleAssetValue
from the state, and if not found, returns null. [#915, #2200]
ITransport.AsPeer
and Swarm<T>.AsPeer
type changed from Peer
to BoundPeer
. [#2215]
Peer
changed to BoundPeer
. [#2228]
Peer
that weren't handled by #2228 changed to BoundPeer
. [#2233]
PingTimeoutException
CurrencyPermissionException
, DuplicateActionTypeIdentifierException
, InsufficientBalanceException
, InvalidBlockPreEvaluationHashException
, InvalidBlockProtocolVersionException
, InvalidBlockPublicKeyException
, InvalidBlockSignatureException
, InvalidBlockStateRootHashException
, InvalidBlockTotalDifficultyException
, InvalidGenesisBlockException
, InvalidTxException
, InvalidTxGenesisHashException
, InvalidTxIdException
, InvalidTxNonceException
, InvalidTxSignatureException
, MissingActionTypeException
, NoKeyException
, SupplyOverflowException
, TotalSupplyNotTrackableException
, TxPolicyViolationException
, UnexpectedlyTerminatedActionException
. [#2239, #2241]
Currency.MaximumSupply
property. [#915, #2200]
Currency.TotalSupplyTrackable
field. [#915, #2200]
SupplyOverflowException
class. [#915, #2200]
TotalSupplyGetter
delegate. [#915, #2200]
TotalSupplyStateCompleter<T>
delegate. [#915, #2200]
TotalSupplyStateCompleters<T>
static class. [#915, #2200]
StateCompleterSet<T>.TotalSupplyStateCompleter
property. [#915, #2200]
BoundPeer.PeerString
property. [#2187, #2232]
IIceServer
interface. [#2219]
TurnClient.Create()
static method. [#2219]
stateQuery
field to the root node of GraphQL endpoint. [#2149, #2227]
blockPolicy
field to the root node of GraphQL endpoint. [#2149, #2227]
CurrencyType
class. In GraphQL, it corresponds to Currency
type. [#2149, #2227]
FungibleAssetValueType
class. In GraphQL, it corresponds to FungibleAssetValue
type. [#2149, #2227]
StateQuery<T>
class. In GraphQL, it corresponds to StateQuery
type. [#2149, #2227]
BlockPolicyType<T>
class. In GraphQL, it corresponds to BlockPolicy
type. [#2149, #2227]
Currency
now accounts for the maximum supply and total supply tracking. [#915, #2200]
Currency.Serialize()
method stores the major
and minor
values of the maximum supply as Integer
values under the keys maximumSupplyMajor
and maximumSupplyMinor
. For uncapped and legacy untracked currencies, the entries are omitted.Currency(IValue)
constructor now looks for the maximum supply and total supply trackability in the given dictionary and restores them if found.Currency
's implementation of ISerializable
now accounts for the maximum supply and total supply tracking. [#915, #2200]
Currency
's implementation of ISerializable.GetObjectData
now stores the maximum supply if the Currency
is capped.Currency(SerializationInfo, StreamingContext)
constructor now looks for the maximum supply and total supply trackability and restores it if found.IAccountStateDelta.MintAsset(Address, FungibleAssetValue)
and IAccountStateDelta.BurnAsset(Address, FungibleAssetValue)
methods now track the total supply if the total supply of the Currency
is trackable. [#915, #2200]
IAccountStateDelta.MintAsset(Address, FungibleAssetValue)
method now throws SupplyOverflowException
if the sum of current total supply and the value to be minted exceeds the maximum supply of the Currency
instance.NetMQTransport
's general behavior has changed. [#2215]
NetMQTransport
is now able to send requests and receive replies as soon as it is created through NetMQTransport.Create()
factory method.NetMQTransport.StartAsync()
enables a NetMQTransport
instance to recieve requests and send replies.NetMQTransport.StopAsync()
only disables a NetMQTransport
instance to stop recieving requests and sending replies.Published by github-actions[bot] about 2 years ago
Released on Auguest 12th, 2022.
Transaction<T>(long, Address, PublicKey, BlockHash?, IImmutableSet<Address>, DateTimeOffset, IEnumerable<T>, byte[])
constructor is now deprecated. Use Transaction<T>(ITxMetadata, IEnumerable<T>, byte[])
constructor or Transaction<T>.Create()
static method instead. [#2175]
Transaction<T>.Actions
property is now deprecated. Use Transaction<T>.SystemAction
property or Transaction<T>.CustomActions
property instead. [#2149, #2151, #2175]
IPreEvaluationBlockHeader.HashAlgorithm
property and its implementations removed. [#2206, #2207]
IBlockPolicy.GetHashAlgorithm(long)
method and its implementations removed. [#2206, #2207]
InvalidBlockHashAlgorithmTypeException
class removed. [#2206, #2207]
HashAlgorithmGetter
delegate removed. [#2206, #2207]
Transaction<T>.Actions
property became IImmutableList<IAction>
(was IImmutableList<T>
where T : IAction, new()
). [#2149, #2151, #2175]
actions
of many methods to customActions
. [#2149, #2151, #2175]
Transaction<T>(ITxMetadata, IEnumerable<T>, byte[])
constructor's parameter actions
to customActions
.Transaction<T>(long, Address, PublicKey, BlockHash?, IImmutableSet<Address>, DateTimeOffset, IEnumerable<T>, byte[])
constructor's parameter actions
to customActions
.Transaction<T>.Create(long, PrivateKey, BlockHash?, IEnumerable<T>, IImmutableSet<Address>?, DateTimeOffset?)
static method's parameter actions
to customActions
.Transaction<T>.CreateUnsigned(long, PrivateKey, BlockHash?, IEnumerable<T>, IImmutableSet<Address>?, DateTimeOffset?)
static method's parameter actions
to customActions
.TxMetadata.ToBencodex(IEnumerable<IValue>, IImmutableArray<byte>?)
method's parameter actions
to customActions
.IBlockPolicy<T>.NativeTokens
property. [#2149, #2150, #2175]
IImmutableSet<Currency>? nativeTokens
to BlockPolicy<T>()
constructor as its last parameter. [#2149, #2150, #2175]
IActionContext.IsNativeToken(Currency)
method. [#2149, #2150, #2175]
Predicate<Currency> nativeTokenPredicate
to all PreEvaluationBlock<T>.Evaluate()
method as its second parameter (parameter IStateStore stateStore
remains at the last). [#2149, #2150, #2175]
Predicate<Currency> nativeTokenPredicate
to all PreEvaluationBlock<T>.DetermineStateRootHash()
overloads as their second parameter (existing second and rest parameters were shifted). [#2149, #2150, #2175]
Predicate<Currency> nativeTokenPredicate
to BlockChain<T>.MakeGenesisBlock()
method as its last parameter. [#2149, #2150, #2175]
Predicate<Currency> nativeTokenPredicate
to ActionEvaluator<T>()
constructor as its last parameter. [#2149, #2150, #2175]
ChainIdNotFoundException
class. [#2047, #2156]
IStore.GetCanonicalGenesisBlock(HashAlgorithmGetter)
method. [#2162, #2171]
HashAlgorithmType hashAlgorithm
removed from BlockChain<T>.MakeGenesisBlock()
method. [#2206, #2207]
HashAlgorithmType hashAlgorithm
removed from BlockContent<T>.Mine()
method. [#2206, #2207]
HashAlgorithmType hashAlgorithm
removed from PreEvaluationBlock<T>()
constructors. [#2206, #2207]
HashAlgorithmType hashAlgorithm
removed from PreEvaluationBlockHeader<T>()
constructors. [#2206, #2207]
HashAlgorithmType hashAlgorithm
removed from BlockMetadata<T>.DerivePreEvaluationHash()
method. [#2206, #2207]
HashAlgorithmType hashAlgorithm
removed from BlockMetadata<T>.MineNonce()
methods. [#2206, #2207]
BlockMarshaler .UnmarshalPreEvaluationBlockHeader(Dictionary)
changed from (BlockMetadata, Nonce, ImmutableArray<bytes>?)
to PreEvaluationBlockHeader
. Removed overload method BlockMarshaler .UnmarshalPreEvaluationBlockHeader(HashAlgorithm, Dictionary)
. [#2206, #2207]
HashAlgorithmGetter hashAlgorithmGetter
removed from BlockMarshaler.UnmarshalBlockHeader()
method. [#2206, #2207]
HashAlgorithmGetter hashAlgorithmGetter
removed from IStore<T>.GetCanonicalGenesisBlock<T>()
and IStore<T>.GetBlock<T>()
interface methods and their implementations. [#2206, #2207]
HashAlgorithmGetter hashAlgorithmGetter
removed from BlockSet<T>()
constructor. [#2206, #2207]
HashAlgorithmGetter hashAlgorithmGetter
removed from BlockDigest.GetHeader()
method. [#2206, #2207]
HashAlgorithmGetter hashAlgorithmGetter
removed from DelayedRenderer<T>()
constructor. [#2206, #2207]
HashAlgorithmGetter hashAlgorithmGetter
removed from DelayedActionRenderer<T>()
constructor. [#2206, #2207]
HashAlgorithmGetter hashAlgorithm
removed from UntypedBlock()
constructor. [#2206, #2207]
TransactionMutation<T>
class. [#2130]
unsignedTransaction
, bindSignature
and transactionResult
GraphQL fields to TransactionQuery<T>
. [#2130]
Transaction<T>.SystemAction
property. [#2149, #2151, #2175]
Transaction<T>.CustomActions
property. [#2149, #2151, #2175]
systemAction
besides the existing constructors and methods taking customActions
. [#2149, #2151, #2175]
Transaction<T>(ITxMetadata, IAction, byte[])
overloaded constructor.Transaction<T>.Create(long, PrivateKey, BlockHash?, IAction, IImmutableSet<Address>?, DateTimeOffset?)
overloaded static method.Transaction<T>.CreateUnsigned(long, PrivateKey, BlockHash?, IAction, IImmutableSet<Address>?, DateTimeOffset?)
overloaded static method.TxMetadata.ToBencodex(IValue, ImmutableArray<byte>?)
overloaded method.Mint
class.Transfer
class.NonNativeTokenException
class. [#2149, #2150, #2175]
BlockLocator
class. [#1762, #2140]
BlockChain<T>.FindNextHashes(BlockLocator, BlockHash?, int)
method.BlockChain<T>.Fork(BlockHash, bool)
method.BlockChain<T>.GetBlockLocator(int)
method.IActionContext.GenesisHash
property. [#1972, #2179]
ActionEvaluator<T>.GenesisHash
property. [#1972, #2179]
IAccountStateView
interface. [#2183]
IAccountStateDelta
now inherits IAccountStateView
interface. [#2183]
BlockMetadata.HashAlgorithmType
static property. [#2206, #2207]
BlockMarshaler.UnmarshalNonce(Dictionary)
and BlockMarshaler.UnmarshalPreEvaluationHash(Dictionary)
methods. [#2206, #2207]
BlockChain<T>.PerceiveBlock()
method now uses millisecond precision for perceive time of newly perceived blocks. [#2155, #2159]
IStore
are now considered to be chain ids of empty chains. [#2047, #2156]
Libplanet.Explorer
now targets .NET 6.0. [#2173]
Block<T>.GetHashCode()
changed. [#2206, #2207]
Published by github-actions[bot] over 2 years ago
Released on July 18th, 2022.
TcpTransport
class. [#2139]
InvalidMagicCookieException
class. [#2139]
SwarmOptions.TransportType
property. [#2139]
InitConfig.TransportType
property. [#2139]
DuplicateActionTypeIdentifierException
class. [#2142]
Swarm<T>()
constructor's workers
parameter to 100. [#2128, #2134]
workers
console argument to 100. [#2128, #2134]
PolymorphicAction<T>
now allows subclasses of T
to be declared in the entry assembly of the application besides the same assembly as T
. [#2136, #2142]
PolymorphicAction<T>
now throws DuplicateActionTypeIdentifierException
when multiple subtypes of T
are associated with the same ActionTypeAttribute.TypeIdentifier
. [#2142]
PrivateKey()
constructor had returned an invalid key less than 32 bytes. [#1696, #2091]
Uri.UserInfo
with multiple colons is now rejected by IceServer(Uri url)
constructor and exception is thrown. [#2058, #2116]
Published by github-actions[bot] over 2 years ago
Released on June 7th, 2022.
username
and credential
parameters from IceServer(string, string?, string?)
and IceServer(Uri, string?, string?)
. [#2048, #2049]
IceServer.Username
and IceServer.Credential
are no longer nullable. [#2048, #2049]
NetworkConfig
class. [#1946, #2000]
NodeConfig
class. [#1946, #2000]
NodeUtils
class. [#2013]
SwarmConfig
, InitConfig
, BootstrapConfig
PreloadConfig
, and SyncConfig
classes. [#2021]
Published by github-actions[bot] over 2 years ago
Released on May 30th, 2022.
SwarmOptions.BootstrapDialTimeout
. Use SwarmOptions.BootstrapOptions.DialTimeout
instead. [#2024]
Swarm<T>.BootstrapAsync(CancellationToken)
which utilizes values stored in BootstrapOptions
. [#2024]
depth
changed to searchDepth
for Swarm<T>.BootstrapAsync(IEnumerable<Peer>, TimeSpan?, int, CancellationToken)
and made non-optional. [#2024]
Swarm<T>.BootstrapAsync(IEnumerable<Peer>, depth, CancellationToken)
removed. [#2024]
SwarmOptions.PreloadDialTimeout
. Use SwarmOptions.PreloadOptions.DialTimeout
instead. [#2025]
Swarm<T>.PreloadAsync(IProgress<PreloadState>, bool, CancellationToken)
. [#2025]
Swarm<T>(TimeSpan, IProgresss<PreloadState>, bool, long, CancellationToken)
to Swarm<T>( TimeSpan?, long, IProgress<PreloadState>, bool, CancellationToken)
with default value for tipDeltaThreshold
removed. [#2025]
Urls
changed to Url
for IceServer
and no longer accepts multiple Urls for single instance. [#2026]
BootstrapOptions
class. [#2024]
BootstrapOptions
property to SwarmOptions
. [#2024]
PreloadOptions
class. [#2025]
PreloadOptions
property to SwarmOptions
. [#2025]
Published by github-actions[bot] over 2 years ago
Released on May 26th, 2022.
Transaction<T>()
constructor's bug that it had thrown KeyNotFoundException
when a Bencodex dictionary without signature. [#2005]
Published by github-actions[bot] over 2 years ago
Released on May 25th, 2022.
InvalidTxPublicKeyException
class. [#1164, #1978]
SwarmOptions.BlockDownloadTimeout
removed. [#1981, #1982]
Swarm<T>.BootstrapAsync(IEnumerable<Peer>, TimeSpan?, TimeSpan?, int, CancellationToken)
changed to Swarm<T>.BoostrapAsync( IEnumerable<Peer>, TimeSpan?, int, CancellationToken)
. Parameter dialTimeout
now gets used for both old pingSeedTimeout
and findNeigborsTimeout
. [#1990]
IProtocol.BootstrapAsync(IEnumerable<BoundPeer>, TimeSpan?, TimeSpan?, int, CancellationToken)
changed to IProtocol.BootstrapAsync( IEnumerable<Peer>, TimeSpan?, int, CancellationToken)
. Parameter dialTimeout
now gets used for both old pingSeedTimeout
and findNeigborsTimeout
. [#1990]
ITxMetadata
interface. [#1164, #1974, #1978]
TxMetadata
class. [#1164, #1974, #1978]
ITxExcerpt
interface. [#1164, #1974, #1978]
TxExcerptExtensions
static class. [#1164, #1974, #1978]
Transaction<T>
now implements ITxExcerpt
interface. [#1164, #1974, #1978]
Transaction<T>(ITxMetadata, IEnumerable<T>, byte[])
constructor. [#1164, #1978]
TxId.FromString()
static method. [#1978]
UntypedTransaction
class. [#1974, #1978]
UntypedBlock
class. [#1974, #1978]
Transaction<T>(long, Address, PublicKey, BlockHash?, IImmutableSet<Address>, DateTimeOffset, IEnumerable<T>, byte[])
constructor became to ignore its second parameter Address signer
. Instead, Transaction<T>.Signer
property is now automatically derived from its PublicKey
. [#1164, #1978]
InvalidOperationException
thrown by PublicKey.Verify()
method if signature
is a default(ImmutableArray<byte>)
. Instead, it silently returns false
now. [#1978]
NullReferenceException
thrown by ByteUtil.Hex(in ImmutabelArray<byte>)
method if a default(ImmutableArray<byte>)
is present. Instead, it silently returns an empty string now. [#1978]
TxId(byte[])
constructor's bug where ParamName
and Message
of ArgumentOutOfRangeException
it had thrown had been reversed. [#1978]
Published by github-actions[bot] over 2 years ago
Released on May 23rd, 2022.
TimeoutOptions.PreloadDialTimeout
fixed. [#1983]
Published by github-actions[bot] over 2 years ago
Released on May 20th, 2022.
SwarmOptions.PollInterval
removed. [#1962]
BlockCompletion<TPeer, TAction>.Complete()
no longer accepts neither parmeter TimeSpan singleSessionTimeout
nor int millisecondsSingleSessionTimeout
to regulate a single session length. [#1961]
Swarm<T>.BootstrapAsync()
, Swarm<T>.PreloadAsync()
, and Swarm<T>.StartAsync()
. [#1962]
Swarm<T>.BootstrapAsync(IEnumerable<Peer>, double, double, int, CancellationToken)
replaced with Swarm<T>.BootstrapAsync(IEnumerable<Peer>, int, CancellationToken)
which uses default values provided by SwarmOptions
for pingSeedTimeout
and findPeerTimeout
.Swarm<T>.StartAsync(int, int, int CancellationToken)
replaced with Swarm<T>.StartAsync(CancellationToken)
which uses default values provided by SwarmOptions
for millisecondsDialTimeout
, millisecondsBroadcastBlockInterval
and millisecondsBroadcastTxInterval
.Swarm<T>.PreloadAsync(IProgress<PreloadState>, bool, long, CancellationToken)
overload method added and Swarm<T>.PreloadAsync(TimeSpan?, IProgress<PreloadState>, bool long, CancellationToken)
changed to Swarm<T>.PreloadAsync( TimeSpan, IProgress<PreloadState>, bool, long, CancellationToken)
TimeoutOptions
property added to SwarmOptions
with all timeout related options moved from SwarmOptions
to TimeoutOptions
. [#1957, #1962]
StoreLoader
delegate. [#1359, #1953, #1955]
StoreLoaderAttribute
class. [#1359, #1953, #1955]
TrieStateStore.Secure
property. [#1955]
NameValueCollectionExtensions
static class. [#1955]
Guid
added to DataModel
. [#1959, #1960]
TimeoutOptions
class added. [#1957, #1962]
SwarmOptions.BlockBroadcastInterval
and SwarmOptions.TxBroadcastInterval
properties added. [#1962]
TimeSpanExtensions.Multiply()
method added. [#1966]
DefaultStore
and DefaultKeyValueStore
-backed TrieStateStore
now can be instantiated with URI scheme default+file:
using StoreLoaderAttribute.LoadStore()
method. [#1359, #1953, #1955]
MemoryStore
and MemoryKeyValueStore
-backed TrieStateStore
now can be instantiated with URI scheme memory:
using StoreLoaderAttribute.LoadStore()
method. [#1359, #1953, #1955]
RocksDBStore
and RocksDBKeyValueStore
-backed TrieStateStore
now can be instantiated with URI scheme rocksdb+file:
using StoreLoaderAttribute.LoadStore()
method. [#1359, #1953, #1955]