MCPcopy Index your code
hub / github.com/exonum/exonum

github.com/exonum/exonum @v1.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0.0 ↗ · + Follow
5,218 symbols 26,536 edges 383 files 1,588 documented · 30%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Exonum

Status: Travis Build Status dependency status codecov

Project info: Docs.rs License: Apache-2.0 LoC rust 1.42.0+ required

Community: Join the chat at https://gitter.im/exonum/exonum Join the chat at https://t.me/exonum_blockchain Join the chat at https://gitter.im/exonum/ruExonum Join the chat at https://t.me/ExonumRU Website

Exonum is an extensible open-source framework for creating blockchain applications. Exonum can be used to create cryptographically powered distributed ledgers in virtually any problem domain, including FinTech, GovTech, and LegalTech. The Exonum framework is oriented towards creating permissioned blockchains, that is, blockchains with the known set of blockchain infrastructure providers.

If you are using Exonum in your project and want to be listed on our website & GitHub list — write us a line to contact@exonum.com.

Contents

This is the main Exonum repository containing the bulk of Rust crates used in Exonum. Rust crates for Exonum are intended to be reasonably small and reusable, hence there is relatively large number of them.

Main Crates

Upstream Dependencies

Tools for Building Services

Services and Node Plugins

Examples

Versioning Policy

Exonum crates follow semantic versioning.

The exonum crate and its re-exported dependencies (exonum-crypto, exonum-merkledb and exonum-keys) are released at the same time; their version is considered the version of the Exonum framework. On the other hand, the crates downstream of exonum (e.g., exonum-node) or independent of it (e.g., exonum-api) may evolve at different speeds, including major releases not tied to a major Exonum release.

Throughout the Exonum codebase, certain APIs are described in the API docs as unstable or experimental. Such APIs may be removed or changed in a semantically non-breaking release (for example, a minor release) of the corresponding crate. Similarly, nominally public APIs that are hidden from the docs via #[doc(hidden)] are considered unstable and thus exempt from semantic versioning limitations.

Supported Rust Versions

The Exonum crates are built against a specific stable Rust version (1.42.0). Newer stable versions are supported as a result. (Feel free to file an issue if any Exonum crate does not build on a newer stable version.) Newer beta and nightly versions should be supported as well, but no specific effort is allocated into supporting them.

Due to at least some external dependencies not factoring the minimum supported Rust version into their semantic versioning policy, the Exonum crates effectively have no choice but to do the same. Namely, a bump of the minimum supported Rust version will not be considered a semantically breaking change. It is, however, guaranteed that the Exonum crates will build on some stable Rust.

Note that due to versioning policies of external dependencies, the effective minimum supported Rust version may increase as a result of the activities out of control of Exonum developers. The decision how to deal with this situation (pin the dependency or bump the minimum supported Rust version) will be made on the case-by-case basis.

Contributing

To contribute to Exonum, please see CONTRIBUTING.

See Also

Some Exonum stuff that is not in this repository:

Extension points exported contracts — how you extend this code

ProtobufConvert (Interface)
Used for establishing correspondence between a Rust struct and a type generated from Protobuf. [33 implementers]
components/proto/src/lib.rs
BinaryValue (Interface)
A type that can be (de)serialized as a value in the blockchain storage. If you need to implement `BinaryValue` for your [24 …
components/merkledb/src/values.rs
Service (Interface)
Describes an Exonum service instance. `Service` determines how a service instance responds to certain requests and even [51 …
runtimes/rust/src/service.rs
ExonumCommand (Interface)
Interface of standard Exonum Core configuration command. [7 implementers]
cli/src/command/mod.rs
WellKnownRuntime (Interface)
A subset of [`Runtime`]s with a well-known runtime identifier. [`Runtime`]: trait.Runtime.html [8 implementers]
exonum/src/runtime/mod.rs
Configure (Interface)
Describes a procedure for updating the configuration of a service instance. [5 implementers]
services/supervisor/src/configure.rs
ProposeBlock (Interface)
Proposal creation logic. An implementation of this trait can be supplied to a node to change how the node will form blo [4 …
exonum-node/src/proposer.rs
TimeProvider (Interface)
A helper trait that provides the node with a current time. [2 implementers]
services/time/src/time_provider.rs

Core symbols most depended-on inside this repo

object_hash
called by 417
exonum-node/src/messages/mod.rs
secret_key
called by 354
exonum-node/src/sandbox/mod.rs
public_key
called by 345
exonum-node/src/sandbox/mod.rs
clone
called by 333
exonum/src/blockchain/api_sender.rs
recv
called by 282
exonum-node/src/sandbox/mod.rs
fork
called by 262
components/merkledb/src/db.rs
collect
called by 252
components/merkledb/src/indexes/proof_list/proof.rs
put
called by 248
components/merkledb/src/views/mod.rs

Shape

Method 2,657
Function 1,679
Class 641
Enum 130
Interface 111

Languages

Rust97%
Python2%
TypeScript1%

Modules by API surface

exonum-node/src/state.rs117 symbols
exonum-node/src/sandbox/mod.rs111 symbols
exonum-node/src/lib.rs83 symbols
components/merkledb/src/indexes/proof_map/tests.rs80 symbols
exonum/src/runtime/dispatcher/migration_tests.rs70 symbols
components/merkledb/src/indexes/proof_map/key.rs64 symbols
components/merkledb/src/db.rs63 symbols
exonum/src/runtime/types.rs62 symbols
components/merkledb/src/views/metadata.rs57 symbols
components/merkledb/src/migration.rs56 symbols
components/merkledb/src/views/tests.rs52 symbols
exonum/src/runtime/dispatcher/mod.rs51 symbols

For agents

$ claude mcp add exonum \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page