此文包含有关运行Parity Polkadot客户端的基本信息。有很多方法可以获取/运行客户端,例如从源代码编译、在Docker中运行或下载二进制文件。本指南将始终将可执行文件称为polkadot。
始终参考客户端的帮助文档中的polkadot --help,以获取最新信息。
笔记
其他客户端实施团队:随意为您的客户端制作带有说明(或说明链接)的此页面的PR。
如果您正在尝试成为验证者,请参阅教程:https://wiki.polkadot.network/docs/maintain-guides-how-to-validate-polkadot
基本节点操作
1、选择链条
使用该--chain 选项选择链。可以是polkadot、kusama、westend、 rococo或自定义链规范。默认情况下,客户端将启动Polkadot。观看视频,学习单个代码库如何为四个不同的区块链提供支持, 以了解有关链的选择的内部工作原理的更多信息。相关视频内容:https://www.youtube.com/watch?v=i9vNCHz6wO4
2、归档节点
归档节点不会删减任何区块或状态数据。使用--pruning archive标注。某些类型的节点(如验证者)必须以归档模式运行。同样,每个区块中的所有事件(Event)都从状态中清除,因此如果你想存储事件,那么你将需要一个归档节点。
译者注:在区块链中,一个归档节点是指一个完全的节点,它会在本地完整地存储整个区块链的历史记录,并且可以提供完整的区块链数据查询服务。与之相对的是轻节点,轻节点只存储最新的区块数据,而不存储区块链的完整历史。归档节点相比轻节点来说,需要更多的存储空间和更高的带宽,因为它需要存储整个区块链的历史记录。然而,归档节点对于某些应用场景来说是非常有用的,比如需要对历史交易数据进行深入分析或者需要对过去某个时间点的状态进行验证等等。归档节点可以提供全面的查询服务,包括历史交易数据、智能合约状态以及历史事件等等。这些数据对于区块链的研究和分析非常重要。例如,研究人员可以利用归档节点进行数据分析,以了解不同的交易模式和趋势,而企业可以使用归档节点对历史交易数据进行审核,以确保其合规性。
有关升级节点的解释,请参考此视频:https://www.youtube.com/watch?v=5LtcdBR9F40&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8&index=6
3、导出区块
要将区块导出到文件,请使用export-blocks。以JSON(默认)或二进制(--binary true)格式导出。polkadot export-blocks --from 0
4、执行
Parity Polkadot客户端实现了一个Polkadot主机和一个本地Runtime。Runtime必须编译为WebAssembly并存储在链上。如果客户端的Runtime规范与存储在链上的Runtime规范相同,则客户端将使用客户端二进制文件执行区块。否则,客户端将从链上执行Wasm Runtime。
因此,在同步链时,客户端将使用其关联的Wasm二进制文件执行过去运行时的区块。此功能还允许无硬分叉升级:客户端可以在不更新客户端的情况下执行新的Runtime。
Parity的Polkadot客户端有两种Wasm执行方式,解释执行(默认)和编译执行。使用--wasm-execution 设置执行Wasm时使用的首选方法。编译执行将运行得更快,尤其是在同步链时,但这是实验性的,可能会使用更多内存/CPU。一个合理的折衷方案是用编译执行同步链,然后用解释执行重新启动节点。
文件结构
Assets pallet有自己的接口来处理资产。请参阅本文下面的集成部分,了解如何获取信息和构建交易。
该节点将许多文件存储在:/home/$USER/.local/share/polkadot/chains//. 您可以使用--base-path 设置自定义路径。
1、keystore
密钥库存储会话密钥,这对验证者的运行很重要。
波卡文档:https://wiki.polkadot.network/docs/learn-cryptographySubstrate文档:https://docs.substrate.io/fundamentals/accounts-addresses-keys/#specialized-accounts
2、数据库
数据库存储区块和状态树(state trie)。如果您正在运行验证器节点,它还会存储 GRANDPA 预投票和预提交以及链下工作数据库。迁移验证器节点时要小心 ,以免模棱两可。如果你想在不重新同步的情况下启动一台新机器,你可以停止你的节点,备份数据库,然后将它移动到一台新机器上。
译者注:关于状态树(state trie)的意思:在区块链技术中,一个区块链网络中的每个节点都有一份完整的数据库,该数据库包含了整个区块链网络中的所有区块和账户状态数据。这个数据库通常被称为“区块链状态数据库”。“state trie”是这个状态数据库中的一部分,它是用于存储账户状态的一种数据结构。在区块链中,每个账户都有一个状态,包括账户余额、合约代码和其他与账户相关的信息。这些账户状态被存储在一个Merkle树结构中,这个Merkle树结构就是“state trie”。
要删除您的数据库并从创世区块重新同步,请运行polkadot purge-chainParity的Polkadot客户端有两种Wasm执行方式,解释执行(默认)和编译执行。使用--wasm-execution 设置执行Wasm时使用的首选方法。编译执行将运行得更快,尤其是在同步链时,但这是实验性的,可能会使用更多内存/CPU。一个合理的折衷方案是用编译执行同步链,然后用解释执行重新启动节点。
3、使用ROCKSDB后端同步验证
默认情况下,这是隐式的,但可以通过传递--database RocksDb标志来显式设置。在未来,建议切换到使用更快且更高效的ParityDb选项。在不同的数据库后端之间进行切换将需要重新同步。
如果您想测试ParityDB,可以添加--database paritydb标志。
部署工具
Web3基金会维护Polkadot Deployer,它允许您创建Polkadot节点的本地或远程云部署。有关说明,请参阅README文件。相关内容:https://github.com/w3f/polkadot-deployer验证者,请参阅验证者设置指南,以获取特定的部署验证者节点的信息。相关内容:https://wiki.polkadot.network/docs/maintain-guides-how-to-use-polkadot-validator-setup
监控和遥测
1、节点状态
您可以使用websocat通过RPC检查节点的健康状况 :https://github.com/vi/websocat#installation
echo | websocat -n1 -B 99999999 ws://127.0.0.1:9944{"jsonrpc":"2.0","result":{"peers":50,"isSyncing":false,"shouldHavePeers":true},"id":1}
2、日志
Polkadot客户端有许多日志目标。用户最感兴趣的可能是:
- afg(Al's Finality Gadget - GRANDPA共识)
- babe
- telemetry
- txpool
- usage
其他目标包括:db、gossip、peerset、state-db、state-trace、sub-libp2p、trie、wasm-executor、wasm-heap。日志级别,从最少到最详细,是:
- error
- warn
- info
- debug
- trace
默认情况下,所有目标都设置为info日志记录。您可以使用--log (-l short)选项调整单个日志级别,例如-l afg=trace,sync=debug或全局使用-ldebug.
3、遥测和指标
Parity Polkadot客户端默认连接到遥测(Telemetry)。您可以使用--no-telemetry禁用它,或者使用--telemetry-url选项仅连接到指定的遥测服务器(有关说明,请参阅帮助选项)。连接到公共遥测可能会公开信息,从而使您的节点面临更高的攻击风险。您可以运行自己的私有遥测服务器或使用此Helm图表将substrate-telemetry实例部署到Kubernetes集群中。
该节点还默认公开了一个Prometheus端点(可以使用--no-prometheus禁用)。Substrate 有一个使用此端点的监控节点指标教程。相关内容:https://docs.substrate.io/tutorials/get-started/monitor-node-metrics/