显示crate…
1 个不稳定版本
0.1.0 | 2022年4月23日 |
---|
#17 在 #tetcore
11KB
Tetcore Node Windows
为Windows打造的新FABRIC-based Tetcore节点,准备进行黑客攻击 🚀
本地开发
按照以下步骤准备本地Tetcore开发环境 🛠️
设置
在Tetcore开发者中心找到手动设置说明。
构建
一旦开发环境设置完毕,构建节点模板。此命令将构建Wasm和本地代码
cargo build --release
运行
单节点开发链
清除任何现有的开发链状态
./target/release/node-template purge-chain --dev
启动开发链
./target/release/node-template --dev
或者,以详细日志启动开发链
RUST_LOG=debug RUST_BACKTRACE=1 ./target/release/node-template -lruntime=debug --dev
多节点本地测试网
要查看多节点共识算法的实际操作,运行一个包含两个验证节点(Alice和Bob)的本地测试网,这些节点已配置为本地测试网链的初始权威节点,并赋予测试网单元。
注意:这需要两个终端会话(每个节点一个)。
首先启动Alice的节点。下面的命令使用默认的TCP端口(30333)并指定/tmp/alice
作为链数据库位置。Alice的节点ID将是12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp
(旧表示法:QmRpheLN4JWdAnY7HGJfWFNbfkQCb6tFf4vvA6hgjMZKrR
);这是由node-key
决定的。
cargo run -- \
--base-path /tmp/alice \
--chain=local \
--alice \
--node-key 0000000000000000000000000000000000000000000000000000000000000001 \
--telemetry-url 'ws://telemetry.polkadot.io:1024 0' \
--validator
在另一个终端中,使用以下命令在另一个TCP端口(30334)和链数据库位置/tmp/bob
上启动Bob的节点。--bootnodes
选项将Bob的节点连接到Alice的TCP端口30333
cargo run -- \
--base-path /tmp/bob \
--bootnodes /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp \
--chain=local \
--bob \
--port 30334 \
--ws-port 9945 \
--telemetry-url 'ws://telemetry.polkadot.io:1024 0' \
--validator
执行cargo run -- --help
以了解更多关于模板节点CLI选项的信息。
模板结构
此类Tetcore项目包含多个组件,这些组件分布在几个目录中。
节点
区块链节点是一个应用程序,允许用户参与区块链网络。基于Tetcore的区块链节点公开了一系列功能
- 网络:Tetcore节点使用
libp2p
网络堆栈,使网络中的节点能够相互通信。 - 共识:区块链必须有一种方式来就网络的状态达成共识。Tetcore使提供自定义共识引擎成为可能,并附带了几种基于Web3 Foundation研究的共识机制。
- RPC服务器:远程过程调用(RPC)服务器用于与Tetcore节点交互。
在node
目录中存在几个文件 - 请注意以下文件
chain_spec.rs
:链规范是一个源代码文件,它定义了Tetcore链的初始(创世)状态。链规范对于开发和测试很有用,在构建生产链的架构时至关重要。注意development_config
和testnet_genesis
函数,它们用于定义本地开发链配置的创世状态。这些函数识别一些知名账户,并使用它们来配置区块链的初始状态。service.rs
:此文件定义了节点实现。注意此文件导入的库和调用的函数名称。特别是,有关共识相关主题的引用,例如最长链规则、Aura区块制作机制和GRANDPA最终性设备。
在节点构建后,请参考嵌入式文档以了解其公开的功能和配置参数
./target/release/node-template --help
运行时
在Tetcore中,“运行时”和“状态转换函数”术语是相似的 - 它们指的是区块链的核心逻辑,负责验证区块和执行它们定义的状态变化。此存储库中的Tetcore项目使用FABRIC框架构建区块链运行时。FABRIC允许运行时开发者声明在称为“贵族”的模块中的特定领域逻辑。FABRIC的核心是一个有用的宏语言,它使得创建贵族和灵活地将它们组合起来以创建能够满足各种需求的区块链变得容易。
审查此模板中包含的FABRIC运行时实现并注意以下内容
- 此文件配置了几个要在运行时包含的贵族。每个贵族配置由一个以
impl $NOBLE_NAME::Config for Runtime
开头的代码块定义。 - 贵族通过
construct_runtime!
宏组合成一个单一运行时,该宏是核心 FABRIC 支持库 的一部分。
贵族
本项目中的运行时是使用来自 核心 Tetcore 仓库 的许多 FABRIC 贵族和一个在 nobles
目录中定义的模板贵族构建的。
FABRIC 贵族由一系列区块链原语组成
- 存储:FABRIC 定义了一组丰富的强大 存储抽象,这使得使用 Tetcore 高效的键值数据库来管理区块链的演变状态变得容易。
- 可调用项:FABRIC 贵族定义了特殊类型的函数,可以从运行时外部调用(调度)以更新其状态。
- 事件:Tetcore 使用 事件 通知用户运行时中的重要变化。
- 错误:当可调用项失败时,它返回一个错误。
- 配置:
Config
配置接口用于定义 FABRIC 贵族所依赖的类型和参数。
生成自定义节点模板
通过运行以下命令根据特定的提交生成 Tetcore 节点模板
# Clone from the main Tetcore repo
git clone https://github.com/tetcoin/tetcore.git
cd tetcore
# Switch to the branch or commit to base the template on
git checkout <branch/tag/sha1>
# Run the helper script to generate a node template. This script compiles Tetcore, so it will take
# a while to complete. It expects a single parameter: the location for the script's output expressed
# as a relative path.
.maintain/node-template-release.sh ../node-template.tar.gz
不支持自定义节点模板。为了获得支持,请使用最近的 Tetcore 开发者节点模板 的标记版本。