运行公共网络(高级)
⚠️
如果你只是想运行你自己的本地网络进行测试,你可以在这里学习如何运行一个本地网络。
创世仪式(Genesis ceremonies)
aptos
工具通过一个特别的流程,即创世仪式,来启动新的区块链。这个过程的核心是执行一系列 move 指令,以便为区块链的在线部署做好准备。这个流程涉及到以下几个输入要素:
- 一系列验证者及其配置信息。
- 称为框架的初始 Move 模块集。
- 一个独特的 ChainId (u8),用来识别不同的网络。
- 在测试链中,有一个专门负责管理铸造 AptosCoin 的账户。
开始生成创始区块
- 创始组织者构建并分发一个
Layout
。 - 创始组织者准备并分发 Aptos 框架的字节码。
- 各参与者生成自己的验证器配置(
ValidatorConfiguration
)并将其分发。 - 各参与者基于收到的贡献创建一个
genesis.blob
文件。 - 创始组织者运行
genesis.blob
,以生成初始路标文件并将其分发。 - 各参与者启动他们的
aptos-node
。启动时,aptos-node
会验证创始组织者提供的含有路标文件的genesis.blob
。 - 一旦拥有足够的权益(stack),区块链将开始达成共识。
准备 aptos-core
以下部分依赖于 Aptos 源代码中的工具。见从源代码构建 Aptos进行设置。
layout
文件
layout 文件包含:
root_key
:用一个用于 AptosCoin 管理操作的 Ed25519 公钥。users
:参与者的集合chain_id
:为ChainId
或一个唯一的整数,以区别于其他被部署的 Aptos 网络
一个例子:
root_key: "0xca3579457555c80fc7bb39964eb298c414fd60f81a2f8eedb0244ec07a26e575"
users:
- alice
- bob
chain_id: 8
构建 Aptos 框架
从你的 Aptos-core 仓库,构建框架并打包它:
Terminal
cargo run --package framework
mkdir aptos-framework-release
cp aptos-framework/releases/artifacts/current/build/**/bytecode_modules/* aptos-framework-release
框架将存储在 aptos-framework-release
目录中。
ValidatorConfiguration
文件
ValidatorConfiguration
文件包含:
account_address
:负责管理该验证者节点的账户地址,需要根据ValidatorConfiguration
文件中给出的account_key
来生成。consensus_key
:验证者节点发出的共识消息认证所用的公钥。account_key
:管理该验证者节点的账户公钥,用以生成账户地址account_address
。network_key
:认证验证者节点和全节点网络的公钥,并提供加密功能。validator_host
:验证节点的网络主机地址,包括host
和port
字段。host
可以是 DNS 名称或者 IP 地址,目前仅支持 IPv4 协议。full_node_host
:(可选)全节点的网络主机地址,含有host
和port
字段。host
可以是 DNS 名称或者 IP 地址,目前仅支持 IPv4 协议。stake_amount
:该节点质押的 Coin 数量。这个数量应该是1
,如果不符合,配置将被认定为无效。
一个例子:
account_address: ccd49f3ea764365ac21e99f029ca63a9b0fbfab1c8d8d5482900e4fa32c5448a
consensus_key: "0xa05b8f41057ac72f9ca99f5e3b1b787930f03ba5e448661f2a1fac98371775ee"
account_key: "0x3d15ab64c8b14c9aab95287fd0eb894aad0b4bd929a5581bcc8225b5688f053b"
network_key: "0x43ce1a4ac031b98bb1ee4a5cd72a4cca0fd72933d64b22cef4f1a61895c2e544"
validator_host:
host: bobs_host
port: 6180
full_node_host:
host: bobs_host
port: 6182
stake_amount: 1
使用 aptos
CLI 生成这个:
- 生成你的验证者节点的密钥:
Terminal
cargo run --package aptos -- genesis generate-keys --output-dir bobs
- 生成你的
ValidatorConfiguration
:
Terminal
cargo run --package aptos -- \
genesis set-validator-configuration \
--keys-dir bobs \
--username bob \
--validator-host bobs_host:6180 \
--full-node-host bobs_host:6180 \
--local-repository-dir .
- 最后一个命令将生成一个
bob.yaml
文件,这需要被分发给其他参与者用于genesis.blob
生成。
生成创世区块和路标文件
在获取到 layout
文件、各个 ValidatorConfiguration
配置文件以及框架版本之后,我们就可以开始生成 genesis.blob
以及相应的路标文件。务必就检查此前阶段提供的 ValidatorConfiguration
文件与生成 genesis.blob
时使用的版本是否一致。一旦出现不一致情况,必须及时通知所有的参与者。
生成 genesis.blob
及路标需要遵循以下步骤:
- 把
layout
文件放入一个特定的文件夹内,例如:genesis
。 - 把所有
ValidatorConfiguration
配置文件都放入genesis
文件夹中。 - 确保
layout
文件里的users
列表中包含了所有ValidatorConfiguration
文件。 - 在
genesis
文件夹中创建一个名为framework
的子文件夹,并把框架的发行版本.mv
文件放入其中。 - 运用
aptos
命令行工具来生成创世区块genesis.blob
和路标文件。
Terminal
cargo run --package aptos -- genesis generate-genesis --local-repository-dir genesis
启动 aptos-node
生成 genesis.blob
和路标文件后,将它们放入你的验证者节点和全节点的配置目录,并启动你的验证者节点和验证者全节点。