4 releases (1 stable)

1.0.0 Mar 31, 2020
1.0.0-rc.3 Mar 25, 2020
1.0.0-rc.2 Mar 13, 2020
1.0.0-rc.1 Feb 7, 2020

#16 in #exonum


27K SLoC

Exonum Middleware Service

Travis Build Status License: Apache-2.0 rust 1.42.0+ required

exonum-middleware-service provides a collection of middleware for Exonum blockchain framework, allowing to compose Exonum transactions. For example, the service allows to batch transactions in order to execute the batch atomically, or to check the version of the service before performing a call to it.

Consult the crate docs for more details about the service API.

Functionality overview

Transaction batching

Batching allows to atomically execute several transactions; if an error occurs during execution, changes made by all transactions are rolled back. All transactions in the batch are authorized in the same way as the batch itself.

Checked call

Checked call is a way to ensure that the called service corresponds to a specific artifact with an expected version range. Unlike alternatives (e.g., finding out this information via the services endpoint of the node HTTP API), using checked calls is most failsafe; by design, it cannot suffer from TOCTOU issues. It does impose a certain overhead on the execution, though.


Include exonum-middleware-service as a dependency in your Cargo.toml:

exonum = "1.0.0"
exonum-middleware-service = "1.0.0"


exonum-middleware-service is licensed under the Apache License (Version 2.0). See LICENSE for details.


~1.5M SLoC