## 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.