mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-11 13:39:25 +00:00
Redo primitives, abi
Consolidates all primitives into a single crate. We didn't benefit from its fragmentation. I'm hesitant to say the new internal-organization is better (it may be just as clunky), but it's at least in a single crate (not spread out over micro-crates). The ABI is the most distinct. We now entirely own it. Block header hashes don't directly commit to any BABE data (avoiding potentially ~4 KB headers upon session changes), and are hashed as borsh (a more widely used codec than SCALE). There are still Substrate variants, using SCALE and with the BABE data, but they're prunable from a protocol design perspective. Defines a transaction as a Vec of Calls, allowing atomic operations.
This commit is contained in:
@@ -1,39 +1,13 @@
|
||||
use crate::BlockNumber;
|
||||
use core::time::Duration;
|
||||
|
||||
// 1 MB
|
||||
pub const BLOCK_SIZE: u32 = 1024 * 1024;
|
||||
// 6 seconds
|
||||
// TODO: Use Duration
|
||||
pub const TARGET_BLOCK_TIME: u64 = 6;
|
||||
/// The target block time.
|
||||
pub const TARGET_BLOCK_TIME: Duration = Duration::from_secs(6);
|
||||
|
||||
/// Measured in blocks.
|
||||
pub const MINUTES: BlockNumber = 60 / TARGET_BLOCK_TIME;
|
||||
pub const HOURS: BlockNumber = 60 * MINUTES;
|
||||
pub const DAYS: BlockNumber = 24 * HOURS;
|
||||
pub const WEEKS: BlockNumber = 7 * DAYS;
|
||||
// Defines a month as 30 days, which is slightly inaccurate
|
||||
pub const MONTHS: BlockNumber = 30 * DAYS;
|
||||
// Defines a year as 12 inaccurate months, which is 360 days literally (~1.5% off)
|
||||
pub const YEARS: BlockNumber = 12 * MONTHS;
|
||||
/// The intended duration for a session.
|
||||
// 1 week
|
||||
pub const SESSION_LENGTH: Duration = Duration::from_secs(7 * 24 * 60 * 60);
|
||||
|
||||
/// 6 months of blocks
|
||||
pub const GENESIS_SRI_TRICKLE_FEED: u64 = 6 * MONTHS;
|
||||
|
||||
// 100 Million SRI
|
||||
pub const GENESIS_SRI: u64 = 100_000_000 * 10_u64.pow(8);
|
||||
|
||||
/// This needs to be long enough for arbitrage to occur and make holding any fake price up
|
||||
/// sufficiently unrealistic.
|
||||
#[allow(clippy::cast_possible_truncation)]
|
||||
pub const ARBITRAGE_TIME: u16 = (2 * HOURS) as u16;
|
||||
|
||||
/// Since we use the median price, double the window length.
|
||||
///
|
||||
/// We additionally +1 so there is a true median.
|
||||
pub const MEDIAN_PRICE_WINDOW_LENGTH: u16 = (2 * ARBITRAGE_TIME) + 1;
|
||||
|
||||
/// Amount of blocks per epoch in the fast-epoch feature that is used in tests.
|
||||
pub const FAST_EPOCH_DURATION: u64 = 2 * MINUTES;
|
||||
|
||||
/// Amount of blocks for the initial period era of the emissions under the fast-epoch feature.
|
||||
pub const FAST_EPOCH_INITIAL_PERIOD: u64 = 2 * FAST_EPOCH_DURATION;
|
||||
/// The maximum amount of key shares per set.
|
||||
pub const MAX_KEY_SHARES_PER_SET: u16 = 150;
|
||||
/// The maximum amount of key shares per set, as an u32.
|
||||
pub const MAX_KEY_SHARES_PER_SET_U32: u32 = MAX_KEY_SHARES_PER_SET as u32;
|
||||
|
||||
Reference in New Issue
Block a user