- Updated
Nethereumto3.3.0. - Updated
Protobufto3.9.0. - Added full support for subscribing to specific event topics for Go contracts. Previously, this had to be done through the
IRpcClientdirectly, which was error-prone and ignored the order of calls. Now, subscribing/unsubscribing are separate operations. SeeDAppChainClient.SubscribeToEvents/UnsubscribeFromAllEvents/SubscribeToEvents/UnsubscribeFromEvents. - Added
RawChainEventContract, which is similar toRawChainEventContract, but isn't expecting the event data to be in JSON-RPC format. - Fixed fetching EVM logs with a filter applied not working in some cases.
- Fixed link.xml to work on AOT platform with bytecode stripping enabled.
- Prioritize write client for getting nonce.
- Implemented speculative nonce.
- Fixed concurrency issues in
CryptoUtils. - Increment retry delay on invalid nonce exponentially instead.
- Fixed tests to compile with Solidity 0.5.0 compiler.
- Fixed building in Unity 2019.1.
- Use
DAppChainClientConfigurationclass forDAppChainClientoptions instead of having multiple properties inside ofDAppChainClient.timeoutoptional parameter is now gone fromContract.Call*methods, modifyCallTimeoutandStaticCallTimeoutinDAppChainClient.Configurationnow. - Modified
Loom.Nethereum.Minimal.Packed.dllto not use PublicKey when referencingLoom.Newtonsoft.Json(was causing assembly reference mismatch in Unity in some cases). - Fixed an issue in
WebSocketRpcClientthat caused timeouts when multiple calls were going on at the same time. - Added
Address.FromBytesconvenience method. - Added
EvmContract.GetEventandEvmEvent, allows getting past event with filters (covers #50 and #12). - Added
EvmContract.GetBlockHeight. - Added
IDAppChainClientCallExecutor, a layer that controls the blockchain calls flow. All calls made from insideDAppChainClientmust be wrapped inIDAppChainClientCallExecutormethods calls. CallingIRpcClient.SendAsyncdirectly on an instance ofIRpcClientshould now be considered unsafe. - Implemented
DefaultDAppChainClientCallExecutor:- Calls throw a
TimeoutExceptionif the calls receives no response for too long. - Calls are queued, there can be only one active call at any given moment.
- If the blockchain reports an invalid nonce, the call will be retried a number of times.
- Calls throw a