修改 Solana 区块间隔时间
从《solana 的工作原理》,可以从区块构建过程了解到,每个插槽持续 400 毫秒,查看对应核心代码
// solana-sdk/clock/src/lib.rs
/// The expected duration of a slot (400 milliseconds).
pub const DEFAULT_MS_PER_SLOT: u64 = 1_000 * DEFAULT_TICKS_PER_SLOT / DEFAULT_TICKS_PER_SECOND;
pub const DEFAULT_S_PER_SLOT: f64 = DEFAULT_TICKS_PER_SLOT as f64 / DEFAULT_TICKS_PER_SECOND as f64;
如果参考atlas https://docs.atlas.xyz/architecture/differences_with_solana 将区块创建时间从400ms降低为50ms
从结果角度,有两个参数可以
- DEFAULT_TICKS_PER_SLOT,默认值 64
- DEFAULT_TICKS_PER_SECOND, 默认值160
解释:以 160 个 ticks/s 计算,每时隙 64 个 ticks 意味着领导者轮换和投票将每 400 毫秒发生一次。快速投票节奏可确保更快的最终性和收敛性
从Rollup集中validator的角度,应修改DEFAULT_TICKS_PER_SLOT,缩小8倍。
备注
v2.0.18 版本修改简单些,solana-sdk 没有拆分为单独的模块,直接修改代码即可
v2.2 版本solana-sdk 做了拆分子模块,需要fork下sdk, 然后push到 https://crates.io/ ,整体修改链代码将[workspace.dependencies] 中的solana-clock 替换为fork后的库名
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »