To be released.
PrivateKey.Decrypt()now throws an
InvalidCiphertextExceptioninstead of returning
cipherTextis invalid. [[#140]]
Recipientmodel was replaced by
UpdatedAddressesmodel. Unlike cryptocurrencies, transactions in games are not necessarily a transfer of assets, so it is difficult to determine what type of assert is transferred or who will receives the asset. A more useful perspective is, like what kind of transformation is performed, or what states are changed. To be close to this perspective, we decided to get rid of
Transaction<T>.Recipient(which is singular) and have
Transaction<T>.UpdatedAddresses(which is plural) instead. As there is no more asset to transfer, the term
Senderwas also renamed to
Signer, which fits more to the new perspective. [#121]
Signer. The corresponding parameter names on constructors and methods were also renamed too.
Transaction<T>.Make()factory method is replaced by new
Transaction<T>.Create()factory method. The
timestampparameter became optional, and the new optional
updatedAddressesparameter was added.
RawTransaction.Recipientproperties were replaced by
RawTransaction.UpdatedAddressesproperties. The corresponding parameter names on constructors and methods were replaced too.
- Since the schema of
RawTransactionclass was changed, the serialization format of transactions and blocks were also changed. It affects to the way to generate
Block.Hashvalues as well.
- 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:
BlockChain<T>.Validate()methods now can throw an
IActiontries to update no more need to be manually coded using
IAction.RequestStates()method. That method was removed at all, and updated
Addresses became automatically determined (for the most cases) by track "dirties" on rehearsal mode. This mode dry-runs
IActions with empty
AccountStateGetterdelegate to provide a read-only view to account states.
IAccountStateDeltainterface to replace
AddressStateMap. The interface purposes to provide a read-write view to account states with maintaining
UpdatedAddresses(so-called "dirty"). [#98]
- The type of
IActionContext.PreviousStatesproperty was changed from
IActionContext.Rehearsalproperty. [#131, #135]
UnexpectedlyTerminatedTxRehearsalExceptionclass. [#132, #136]
- The return type of
IAction.Execute()method was changed from
IAction.RequestStates()method because there is no need for it and thus it is not used anymore.
Fixed a bug that mutating a collection of
IActions passed to constructors or factory methods of
Transaction<T>had affected made instances as well. The type of
Transaction<T>.Actionsproperty was changed from
IImmutableList<T>. The corresponding parameters on constructors and factory methods also were changed to take
InvalidTxExceptionand its subclasses became to have
TxIdproperty and the corresponding constructor parameter. This can be useful when multiple
Transaction<T>objects are validated at once.
Address.Sizeconstant, which is fixed to the
Fixed a bug that
Block<T>.Validate()had not thrown
InvalidTxExceptioneven if there is any integrity error on its
Swarm.AddPeersAsync()was fixed so that unreachable
Peers are ignored. [#128]
Swarmbecame able to relay their connection via TURN (RFC 5766) to NAT traversal. To enable this, its constructor (
Swarm()) takes the newly added
IceServers as configuration.
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.Urlswas renamed to
Peer.EndPointand its type also was changed from
IPEndPoint. [#120, #123 by Yang Chun Ung, #126, #127]
Transaction<T>now throws an
InvalidActionTypeExceptionif an action type is not annotated with
Released on March 5, 2019.
- Improved stability of
Initial release. Released on February 26, 2019.