| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| Exonum 1.0.0-rc.2.tar.gz | 2020-03-13 | 1.6 MB | |
| Exonum 1.0.0-rc.2.zip | 2020-03-13 | 2.0 MB | |
| README.md | 2020-03-13 | 6.0 kB | |
| Totals: 3 Items | 3.6 MB | 0 | |
Breaking changes
General
-
Error handling is now performed with the
anyhowcrate instead offailure. (#1805) -
APIs which previously used futures from the
futures 0.1crate are now madeasync, or are usingFutures from the standard library. (#1796, [#1804]) The main affected APIs are as follows: -
Endpoint definitions in the
exonum-apicrate and their counterparts inexonum-rust-runtime - Transaction sending with
ApiSenderfrom theexonumcrate - Node start-up with
Node::run(exonum-nodecrate) andNodeBuilder::run(exonum-clicrate), and shutdown withShutdownHandle(exonum-nodecrate) - HTTP API testing with
TestKitApi(exonum-testkitcrate)
exonum
-
Testkit now does not include incorrect transactions into blocks or memory pool, similar to real Exonum nodes. (#1785)
-
Runtime::deploy_artifactno longer returnsBox<dyn Future<...>>. Instead a special communication channel is used to send deployment status from the runtime to the dispatcher. (#1788) -
Schema::call_errorswas removed in favor of more comprehensivecall_recordsmethod. (#1792) -
Blockchain::create_patchandBlockchain::commitsignatures were changed due to unsoundness of the previous implementation; see "Bug Fixes" section for more details. (#1809) - Replaced
CoreError::ServiceNotStoppedwith the more generalInvalidServiceTransitionerror. (#1806)
exonum-api
- Data types were made non-exhaustive where appropriate. (#1799)
exonum-cli
NodeBuilderwas refactored to use a more intuitive set of interfaces for adding built-in artifacts and services to the blockchain. (#1800)- Submodules of the
commandmodule were made private; the relevant data types are now exported from thecommandmodule directly. Similarly,iomodule was made private. (#1799)
exonum-explorer
- Data types were made non-exhaustive where appropriate. (#1799)
exonum-proto
impl_binary_value_for_pb_messagemacro was removed. Use theBinaryValuederive macro from theexonum-derivecrate instead. (#1805)
exonum-rust-runtime
- Data types were made non-exhaustive where appropriate. (#1799)
exonum-supervisor
- Data types were made non-exhaustive where appropriate. (#1799)
exonum-system-api
-
Public api module has been removed. List of endpoints from private api has been changed. (#1790) Current list of the endpoints:
-
v1/info- obtains information about the node; v1/stats- obtains statistics of the node;v1/peers- adds a peer to the Exonum node;v1/consensus_status- enables or disables consensus on the node;-
v1/shutdown- shuts down the node. -
API data types were made non-exhaustive where appropriate. (#1799)
exonum-testkit
-
TestKitBuilderwas refactored to use a more intuitive set of interfaces for adding built-in artifacts and services to the blockchain. (#1800) -
Data types were made non-exhaustive where appropriate. (#1799)
New Features
exonum
-
Exonum now supports service freezing. A frozen service has fixed state (i.e., does not process transactions and service hooks), but, unlike stopped services, the service HTTP API remains active. (#1780)
-
Core and the explorer service now support retrieving call status with a cryptographic proof of authenticity. (#1792)
-
Exonum now supports unloading of unused service artifacts. This operation may be used to free resources associated with artifacts in the runtime hosting them. (#1794)
exonum-supervisor
-
Supervisor service supports service freezing. (#1781)
-
supervisor/servicesendpoint has been added which obtains information about deployed artifacts and available services. (#1790) -
Supervisor service supports artifact unloading. (#1798)
exonum-rust-runtime
-
Rust services support freezing. (#1780)
-
HTTP API of Rust services is now switched on during data migrations. (#1780)
exonum-testkit
- Testkit server now returns info on emulated nodes. (#1799)
Internal Improvements
exonum
- Core now provides more thorough / context-dependent error descriptions related to service lifecycle. (#1806)
exonum-merkledb
- Index clearing now uses range deletions for RocksDB, providing a significant performance boost for this operation. (#1791)
Bug Fixes
exonum
- Fixed bug related to nodes forgetting transactions after executing a block with them. Previously, nodes forgot all transactions in the executed blocks; such transactions were removed from the ephemeral transaction cache, but were not flushed to the DB or anywhere else. This could lead to consensus hang-up. (#1809)
exonum-node
-
Fixed potential node hang-up if the node received a proposal and a supermajority of transactions approving it before all transactions in the proposal are known. (#1781)
-
Switched off broadcasting of transactions which the node considers incorrect. (#1781)
-
Fixed incorrect invalidation of block proposals. (#1782)
-
Provided clear coherence period for the transaction pool by introducing the
mempool.flush_config_strategyconfiguration parameter. Previously, transactions were flushed to the persistent pool only on block commit. This led to the unexpected behavior of some APIs, such as the transaction getter endpoint in the explorer service. (#1809) -
Fixed race condition when two nodes try to establish outgoing connections to each other at the same time. (#1804)
exonum-testkit
-
Testkit now does not include incorrect transactions into blocks or memory pool, similar to real Exonum nodes. (#1785)
-
Added a method to get reference to the underlying API client for the
TestKitApi. (#1811)