Skip to content
Permalink
Browse files

Organize changelogs

  • Loading branch information...
dahlia committed Mar 14, 2019
1 parent c4d712a commit cca67a164d902c7db4cc73d3c57859a8e68fa236
Showing with 58 additions and 39 deletions.
  1. +58 −39 CHANGES.md
@@ -6,52 +6,71 @@ Version 0.2.0

To be released.

- Renamed `Transaction<T>.Sender`, `RawTransaction.Signer`, and
`IActionContext.From` properties to `Signer`.
The corresponding parameter names on constructors and
methods were also renamed too.
- Old `Transaction<T>.Make()` factory method is replaced by
new `Transaction<T>.Create()` factory method. The `timestamp` parameter
became optional, and the new optional `updatedAddresses` parameter was
added.
- Removed `IActionContext.To` property.
- Added `AccountStateGetter` delegate to provide a read-only view to
account states.
- Added `IAccountStateDelta` interface to replace `AddressStateMap`.
The interface purposes to provide a read-write view to account states
with maintaining `UpdatedAddresses` (so-called "dirty").
- The type of `IActionContext.PreviousStates` property was changed from
`AddressStateMap` to `IAccountStateDelta`.
- The return type of `IAction.Execute()` method was changed from
`AddressStateMap` to `IAccountStateDelta`.
- Removed `IAction.RequestStates()` method because there is no need for it
and thus it is not used anymore.
- `Transaction<T>.Recipient` and `RawTransaction.Recipient` properties were
replaced by `Transaction<T>.UpdatedAddresses` and
`RawTransaction.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 generate `Transaction<T>.Signature`, `Transaction<T>.Id`, and
`Block.Hash` values as well.
- `Transaction<T>`'s `Sender``Recipient` model was replaced by
`Signer``UpdatedAddresses` model. 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 `Sender` was also
renamed to `Signer`, which fits more to the new perspective.

- Renamed `Transaction<T>.Sender`, `RawTransaction.Signer`, and
`IActionContext.From` properties to `Signer`.
The corresponding parameter names on constructors and
methods were also renamed too.
- Old `Transaction<T>.Make()` factory method is replaced by
new `Transaction<T>.Create()` factory method. The `timestamp` parameter
became optional, and the new optional `updatedAddresses` parameter was
added.
- Removed `IActionContext.To` property.
- `Transaction<T>.Recipient` and `RawTransaction.Recipient` properties
were replaced by `Transaction<T>.UpdatedAddresses` and
`RawTransaction.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 generate `Transaction<T>.Signature`,
`Transaction<T>.Id`, and `Block.Hash` values as well.
- Added `InvalidTxUpdatedAddressesException` exception class.
- 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)` returning
`IAccountStateDelta`.
- `Block<T>.Validate()` and `BlockChain<T>.Validate()` methods now can
throw an `InvalidTxUpdateAddressesException`.

- The `Address`es `IAction` tries to update no more need to be manually
coded using `IAction.RequestStates()` method. That method was
removed at all, and updated `Address`es became automatically scanned
using dirty-tracking for the most cases.

- Added `AccountStateGetter` delegate to provide a read-only view to
account states.
- Added `IAccountStateDelta` interface to replace `AddressStateMap`.
The interface purposes to provide a read-write view to account states
with maintaining `UpdatedAddresses` (so-called "dirty").
- The type of `IActionContext.PreviousStates` property was changed from
`AddressStateMap` to `IAccountStateDelta`.
- The return type of `IAction.Execute()` method was changed from
`AddressStateMap` to `IAccountStateDelta`.
- Removed `IAction.RequestStates()` method because there is no need for it
and thus it is not used anymore.
- Added `Transaction<T>.EvaluateActions()` method.
- Added `Block<T>.EvaluateActions()` generator method.

- Fixed a bug that mutating a collection of `IAction`s passed to
constructors or factory methods of `Transaction<T>` had affected
made instances as well.
The type of `Transaction<T>.Actions` property was changed from
`IList<T>` to `IImmutableList<T>`. The corresponding parameters on
constructors and factory methods also were changed to take
`IEnumerable<T>` instead of `IList<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)` returning
`IAccountStateDelta`.
- Added `InvalidTxUpdatedAddressesException` exception class.
- `Block<T>.Validate()` and `BlockChain<T>.Validate()` methods now can
throw an `InvalidTxUpdateAddressesException`.
- The type of `Peer.Urls` property was changed from `Uri` to `IPEndPoint`.
- 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,

0 comments on commit cca67a1

Please sign in to comment.
You can’t perform that action at this time.