concordium_base

Crates.ioconcordium_base
lib.rsconcordium_base
version6.0.0
sourcesrc
created_at2023-03-20 14:53:35.988083
updated_at2024-09-09 09:38:02.421262
descriptionA library that defines common types and functionality that are needed by Concordium Rust projects.
homepagehttps://github.com/Concordium/concordium-base
repositoryhttps://github.com/Concordium/concordium-base
max_upload_size
id815338
size1,490,357
Emil Holm Gjørup (limemloh)

documentation

README

concordium_base

A library that defines common types and functionality that are needed by Concordium Rust projects. The scope of this library is limited to core definitions that are needed by most users.

Its functionality is meant to be re-exported by higher-level libraries, such as the concordium-rust-sdk.

The library covers the following areas

  • the full implementation of the identity layer cryptography. In particular the data structures, data exchange formats between the different parties, and zero-knowledge proofs are implemented by this library.
  • implementation of encrypted transfers, including data exchange formats and zero-knowledge proofs.
  • implementation of ElGamal encryption over the curve abstraction defined in the library.
  • implementation of bulletproofs over the curve abstraction.
  • definition of transactions supported by Concordium, including their hashing, signing, and serialization.
  • definition of the common serialization formats used by the chain.
  • implementation of the VRF (Verifiable Random Function) used by the consensus protocol.

Features

The library has no default features and the following optional ones:

  • encryption - additionally exposes the common::encryption module for handling the encryption format used by various Concordium tools (such as wallet exports). This feature is covered by semver guidelines.
  • ffi - enabling this feature adds a number of foreign exports to the library. These are not guaranteed to be stable and are only used when integrating the library into the node.
  • internal-test-helpers - enabling this feature exposes some library internals that are needed in benchmarks. Functionality exposed by this feature has no stability guarantees.

Guarantees

This library should always be possible to compile for android/ARM, iOS, Wasm, and x86 code. Some parts may be feature gated to work around platform specific limitations though.

Minimum supported rust version

The minimum supported Rust version is stated in the Cargo.toml manifest. Changes in this minimal supported version are going to be accompanied by at least a minor version increase.

Commit count: 6456

cargo fmt