1#![doc = include_str!("../README.md")]
2#![warn(missing_docs)]
3#![cfg_attr(not(feature = "std"), no_std)]
4#[cfg(not(feature = "std"))]
5extern crate alloc;
6
7#[cfg(feature = "std")]
8pub(crate) use std::{collections::BTreeMap, string::String, vec::Vec};
9
10#[cfg(not(feature = "std"))]
11pub(crate) use alloc::{collections::BTreeMap, string::String, vec::Vec};
12
13pub use params::Parameters;
14
15pub mod api;
16pub mod params;
17pub mod service;
18pub mod vm;
19
20pub const BALANCE_PER_ITEM: u64 = 10;
22
23pub const BALANCE_PER_OCTET: u64 = 1;
25
26pub const BALANCE_PER_SERVICE: u64 = 100;
28
29pub const CORES_COUNT: usize = 2;
31
32pub const GAS_ACC: u64 = 10_000_000;
34
35pub const GAS_ALL_ACC: u64 = 20_000_000;
39
40pub const SEGMENT_SIZE: usize = 4104;
42
43pub type Gas = u64;
45
46pub type ServiceId = u32;
48
49pub type OpaqueHash = [u8; 32];
51
52pub type TimeSlot = u32;
54
55pub type StateRoot = OpaqueHash;
57
58pub type BeefyRoot = OpaqueHash;
60
61pub type WorkPackageHash = OpaqueHash;
63
64pub type WorkReportHash = OpaqueHash;
66
67pub type ExportsRoot = OpaqueHash;
69
70pub type ErasureRoot = OpaqueHash;
72
73pub type EntropyBuffer = [OpaqueHash; 4];
75
76pub type ValidatorMetadata = [u8; 128];
78
79pub type BandersnatchPublic = [u8; 32];
81
82pub type Ed25519Public = [u8; 32];
84
85pub type BlsPublic = [u8; 144];
87
88#[cfg(feature = "blake2")]
89pub fn blake2b(input: &[u8]) -> [u8; 32] {
91 use blake2::{Blake2b, Digest, digest::consts::U32};
92
93 let mut hasher = Blake2b::<U32>::new();
94 hasher.update(input);
95 hasher.finalize().into()
96}