分类 Solana-新手教程 下的文章

修改 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后的库名


SOON Stack 技术调研和测试



Solana- Anchor项目文件结构


以下是 Anchor 工作区中默认文件结构的概述:

.
├── .anchor
│   └── program-logs
├── app
├── migrations
├── programs
│   └── [project-name]
│       └── src
│           ├── lib.rs
│           ├── Cargo.toml
│           └── Xargo.toml
├── target
│   ├── deploy
│   │   └── [project-name]-keypair.json
│   ├── idl
│   │   └── [project-name].json
│   └── types
│       └── [project-name].ts
├── tests
│   └── [project-name].ts
├── Anchor.toml
├── Cargo.toml
└── package.json

程序文件夹

/programs文件夹包含项目的 Anchor 程序。单个工作区可以包含多个程序。

测试文件夹

/tests文件夹包含项目的测试文件。创建项目时会为您创建一个默认测试文件。

目标文件夹

/target文件夹包含构建输出。主要子文件夹包括:

  • /deploy:包含您的程序的密钥对和程序二进制文件。
  • /idl:包含程序的 JSON IDL。
  • /types:包含 IDL 的 TypeScript 类型。

Anchor.toml文件

该Anchor.toml文件为您的项目配置工作区设置。

.anchor 文件夹

包含一个program-logs文件,其中包含上次运行测试文件的事务日志。

应用程序文件夹

该/app文件夹是一个空文件夹,您可以选择将其用于前端代码。