0.2.7 |
|
---|---|
0.2.6 |
|
0.2.2 |
|
0.1.7 |
|
0.1.0 |
|
#25 in #aptos
28 次每月下载
用于 71 个包 (52 个直接)
1MB
24K SLoC
Aptos 配置
配置描述了节点(验证器或全节点)的运行细节,并为客户端提供了如何连接到区块链和建立信任的信息。
验证器执行 BFT 协议并托管区块链的真相来源。
全节点作为客户端提交读取请求(即有关区块链状态的查询)的主要入口点,为区块链提供复制服务。反过来,验证器专注于优化交易吞吐量。
客户端是任何感兴趣了解区块链状态或执行事务的服务。
有关验证器和全节点之间差异的更详细总结,请参阅这篇 博客文章。
组织
配置被拆分为多个实用工具
src/config
托管核心配置文件结构src/generator.rs
帮助构建验证器或全节点集的配置集src/keys.rs
用于测试目的,将密钥包装在配置文件中config-builder
通过命令行工具扩展了src/generator.rs
,并提供了生成创世文件的支持。
将 config-builder
分离成独立库是为了满足其生成创世文件的需求。创世文件需要虚拟机(VM)作为依赖,而许多服务在加载或使用配置时不需要虚拟机作为依赖。
构建测试网络(TestNet)
config-builder
为验证器或全节点构建整个配置,包括创世块。它接受一个输入参数索引,用于指定要返回的特定节点配置。这可以用来创建一个与所有验证器兼容的配置,从而创建一个 Aptos 测试网络。同样,该工具也可以用来向现有网络添加全节点。最后,它还支持生成一个可以进行铸造交易/创建账户的 mint/faucet 客户端。
生成新的测试网络
生成完整测试网络配置的要求只有:(i)每个验证器的 IP 地址和端口号;(ii)验证器网络的预商定共享密钥;(iii)网络中验证器的固定顺序。全节点配置可以是新生成的,也可以添加到现有配置中。
验证器 I
的配置可以通过以下方式生成
config-builder validator \
-a $PUBLIC_MULTIADDR_FOR_VALIDATOR_I \
-b $PUBLIC_MULTIADDR_FOR_VALIDATOR_0 \
-d /opt/aptos/data \
-i $I \
-l $ANY_MULTIADDR_FOR_VALIDATOR_I \
-n $TOTAL_NUMBER_OF_VALIDATORS \
-o /opt/aptos/etc \
-s $SHARED_SECRET
例如,这是 4 个验证器中的第 2 个验证器(偏移 1)
config-builder validator \
-a "/ip4/1.1.1.2/tcp/7000" \
-b "/ip4/1.1.1.1/tcp/7000" \
-d /opt/aptos/data \
-i 1 \
-l "/ip4/0.0.0.0/tcp/7000" \
-n 4 \
-o /opt/aptos/etc \
-s 0123456789abcdef101112131415161718191a1b1c1d1e1f2021222324252627
创建铸币服务密钥
config-builder faucet \
-o /opt/aptos/etc \
-s 0123456789abcdef101112131415161718191a1b1c1d1e1f2021222324252627
实例化全节点配置与实例化验证器配置类似。虽然有三种可能的途径:(i)创建新的节点配置;(ii)将另一个网络扩展到现有的全节点;(iii)将全节点网络扩展到验证器。所有三种情况下的输入都是相似的,只是命令(创建与扩展)不同。在扩展验证器时,config-builder
假设有 n + 1
个全节点,并将 n + 1
个身份分配给验证器。这个 n + 1
个 peer id 也用于定义状态同步和内存池的上游 peer。注意:目前,该工具不支持创建全节点网络树。
config-builder full-node (create | extend) \
-a $PUBLIC_MULTIADDR_FOR_FULL_NODE_I \
-b $PUBLIC_MULTIADDR_FOR_FULL_NODE_0 \
-d /opt/aptos/data \
-l $ANY_MULTIADDR_FOR_FULL_NODE_I \
-n $TOTAL_NUMBER_OF_VALIDATORS \
-o /opt/aptos/etc \
-s $VALIDATOR_SHARED_SECRET \
[ -i $I -f $TOTAL_NUMBER_OF_FULL_NODES -c $FULL_NODE_SHARED_SECRET | -p ]
以下是一个将上述验证器配置扩展为全节点配置的示例。
config-builder full-node extend \
-a "/ip4/1.1.1.2/tcp/7100" \
-b "/ip4/1.1.1.2/tcp/7100" \
-d /opt/aptos/data \
-l "/ip4/0.0.0.0/tcp/7100" \
-n 4 \
-o /opt/aptos/etc \
-s 0123456789abcdef101112131415161718191a1b1c1d1e1f2021222324252627 \
-i 0 \
-f 4 \
-c 28292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041424344454547
以下是一个创建一个将连接到上述配置的验证器/全节点混合的新全节点的示例。
config-builder full-node create \
-a "/ip4/1.1.1.3/tcp/7100" \
-b "/ip4/1.1.1.2/tcp/7100" \
-d /opt/aptos/fn/data \
-l "/ip4/0.0.0.0/tcp/7100" \
-n 4 \
-o /opt/aptos/fn/etc \
-s 0123456789abcdef101112131415161718191a1b1c1d1e1f2021222324252627 \
-i 1 \
-f 4 \
-c 28292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041424344454547
同样,可以通过以下方式添加公共网络
config-builder full-node create \
-a "/ip4/1.1.1.2/tcp/7100" \
-b "/ip4/1.1.1.2/tcp/7100" \
-d /opt/aptos/fn/data \
-l "/ip4/0.0.0.0/tcp/7100" \
-n 4 \
-o /opt/aptos/etc \
-s 0123456789abcdef101112131415161718191a1b1c1d1e1f2021222324252627 \
-p
内部结构
配置中包含几个配置。
节点配置
节点配置包含几个模块
- AdmissionControlConfig - 节点托管其入学控制
- BaseConfig - 指定节点的角色和基本目录
- ConsensusConfig - 包括安全规则可信计算基础在内的共识行为
- DebugInterface - 识别系统内部的一个特殊 gRPC 服务
- ExecutionConfig - gRPC 服务端点和定义 Move 标准库和初始验证器集的创世文件路径
- MempoolConfig - 配置未提交事务存储的参数
- MetricsConfig - 指标本地存储
- NetworkConfig - 指定具有密钥的 peer、连接上游 peer 的种子地址、本地 peer 的网络密钥以及其他网络配置参数的 AptosNet 配置文件
- NodeConfig - 托管节点的所有配置文件
- SafetyRulesConfig - 指定安全规则的持久化策略
- StateSyncConfig - 指定状态同步参数以及提供数据的对等节点集
- StorageConfig - 指定AptosDB存储位置及其gRPC服务端点
外部组件配置
除了每个节点之外,还可以配置外部组件
- KeyManagerConfig - 包含启动和运行密钥管理器的配置详情:负责为节点轮换加密密钥的组件服务
共享配置
- LoggerConfig - 为每个组件配置日志服务
- SecureBackendConfig - 配置每个组件使用的安全存储后端
- TestConfig - 在测试期间使用,用于保存账户密钥和配置的临时路径,测试完成后将自动清理
测试
配置测试具有多个目的
- 识别默认值何时发生变化
- 确保解析/存储的一致性
- 验证默认文件名假设是否得到保留
配置中的默认值(特别是路径和地址)具有代码库外部的依赖。这些测试提醒我们,破坏这些测试可能会产生影响,可能会影响生产部署。
当前的测试配置位于 src/config/test_data
。
待办事项
- 添加关闭可选服务的功能(例如,调试接口、AC gRPC)
- 生成公网的实现已损坏
- 默认使用SafetyRule,并从配置生成器中移除
依赖项
~85MB
~1.5M SLoC