To be released.
- Renamed
Transaction<T>.Sender
,RawTransaction.Signer
, andIActionContext.From
properties toSigner
. The corresponding parameter names on constructors and methods were also renamed too. - Old
Transaction<T>.Make()
factory method is replaced by newTransaction<T>.Create()
factory method. Thetimestamp
parameter became optional, and the new optionalupdatedAddresses
parameter was added. - Removed
IActionContext.To
property. - Added
AccountStateGetter
delegate to provide a read-only view to account states. - Added
IAccountStateDelta
interface to replaceAddressStateMap
. The interface purposes to provide a read-write view to account states with maintainingUpdatedAddresses
(so-called "dirty"). - The type of
IActionContext.PreviousStates
property was changed fromAddressStateMap
toIAccountStateDelta
. - The return type of
IAction.Execute()
method was changed fromAddressStateMap
toIAccountStateDelta
. - Removed
IAction.RequestStates()
method because there is no need for it and thus it is not used anymore. Transaction<T>.Recipient
andRawTransaction.Recipient
properties were replaced byTransaction<T>.UpdatedAddresses
andRawTransaction.UpdatedAddresses
properties. The corresponding parameter names on constructors and methods were replaced too.- Since the schema of
RawTransaction
class was changed, the serialization format of transactions and blocks were also changed. It affects to the way to generateTransaction<T>.Signature
,Transaction<T>.Id
, andBlock.Hash
values as well. - Fixed a bug that mutating a collection of
IAction
s passed to constructors or factory methods ofTransaction<T>
had affected made instances as well. The type ofTransaction<T>.Actions
property was changed fromIList<T>
toIImmutableList<T>
. The corresponding parameters on constructors and factory methods also were changed to takeIEnumerable<T>
instead ofIList<T>
. - Added
Transaction<T>.EvaluateActions()
method. - Added
Block<T>.EvaluateActions()
generator method. - A nullary overload of
Block<T>.Validate()
method was gone so that the block validation API is always time-wise. Instead,Block<T>.Validate()
method now has only one overload:Validate(DateTimeOffset, AccountStateGetter)
returningIAccountStateDelta
. - Added
InvalidTxUpdatedAddressesException
exception class. Block<T>.Validate()
andBlockChain<T>.Validate()
methods now can throw anInvalidTxUpdateAddressesException
.- The type of
Peer.Urls
property was changed fromUri
toIPEndPoint
. - Since we decided to depend on TURN (RFC 5766) and STUN (RFC 5389) to
work around NAT so that
Peer
's endpoints don't have to be multiple,Peer.Urls
was renamed toPeer.EndPoint
and its type also was changed fromIImmutableList<Uri>
toIPEndPoint
. [#120, #123 by Yang Chun Ung, #126, #127] Address
andTxId
are now serializable. [#99, #124 by Qria]InvalidTxException
and its subclasses became to haveTxId
property and the corresponding constructor parameter. This can be useful when multipleTransaction<T>
objects are validated at once.- Added
Address.Size
constant, which is fixed to theInt32
20. - Fixed a bug that
Block<T>.Validate()
had not thrownInvalidTxException
even if there is any integrity error on itsTransactions
. Swarm.AddPeersAsync()
was fixed so that unreachablePeer
s are ignored. [#128]
Released on March 5, 2019.
- Improved stability of
Swarm
andSwarmTest
.
Initial release. Released on February 26, 2019.