# Celestia Validator Node 搭建教程 **Published by:** [Chuck](https://paragraph.com/@chuck-3/) **Published on:** 2022-11-02 **URL:** https://paragraph.com/@chuck-3/celestia-validator-node ## Content 配置要求: 4 核 8 G,磁盘空闲位置 >= 250 GB,1 Gbps 下载带宽/ 100 Mbps上传带宽 本文使用的系统为:Ubuntu Linux 20.04 (LTS) x641. 安装依赖安装运行节点所必要的东西,首先升级 apt(可以理解为应用商店)。在命令行复制粘贴这行命令,如无特殊说明,本文中其他命令皆可直接复制粘贴!!!sudo apt update && sudo apt upgrade -y 升级好 apt 之后,我们安装相应的依赖,sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential git make ncdu -y Celestia 的 App 和 Node 都是用 Golang 这门语言写的,所以我们需要安装 Golang 去编译和运行它们。一行一个命令,一行一行地复制执行。ver="1.18.2" cd $HOME wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" sudo rm -rf /usr/local/go sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" rm "go$ver.linux-amd64.tar.gz" 下一步需要把 Go 的路径添加到系统环境变量里面(可以理解为帮助系统去找到 Go)echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile # 这行是注释,不要复制,👆上面是一条命令,👇下面是一条命令 source $HOME/.bash_profile 然后我们可以在命令行输入下面的命令去检查 Go 是否安装成功go version 如果安装成功,应该是像我这个样子的:如红框所示,出现这个就代表安装成功2. 部署 celestia-app2.1 安装 celestia-app复制以下命令并执行,不要复制注释# 命令一 cd $HOME # 命令二 rm -rf celestia-app # 命令三 git clone https://github.com/celestiaorg/celestia-app.git # 命令四 cd celestia-app/ # 命令五 APP_VERSION=$(curl -s \ https://api.github.com/repos/celestiaorg/celestia-app/releases/latest \ | jq -r ".tag_name") # 命令六 git checkout tags/$APP_VERSION -b $APP_VERSION # 命令七 make install 2.2 设置连接到 Mamaki 网络复制以下命令,一行一个cd $HOME rm -rf networks git clone https://github.com/celestiaorg/networks.git 给你的节点起个名字# 这里你可以把 "Chuck's Validator Node" 换成你想要起的名字,记得带引号 "" celestia-appd init "Chuck's Validator Node" --chain-id mamaki 复制 genesis.json 文件cp $HOME/networks/mamaki/genesis.json $HOME/.celestia-app/config 设置 seeds 和 peers# 命令一 BOOTSTRAP_PEERS=$(curl -sL https://raw.githubusercontent.com/celestiaorg/networks/master/mamaki/bootstrap-peers.txt | tr -d '\n') # 命令二 echo $BOOTSTRAP_PEERS # 命令三 sed -i.bak -e "s/^bootstrap-peers *=.*/bootstrap-peers = \"$BOOTSTRAP_PEERS\"/" $HOME/.celestia-app/config/config.toml 2.3 配置 pruning(可选)如果你的磁盘空间不是很大的话,你可以修改 pruning 配置,直接复制粘贴下面命令。如果你磁盘空间还有很多的话,可以忽略这一步。PRUNING="custom" PRUNING_KEEP_RECENT="100" PRUNING_INTERVAL="10" # 命令一,此处怕引起小白误会,故加此注释以作说明 sed -i -e "s/^pruning *=.*/pruning = \"$PRUNING\"/" $HOME/.celestia-app/config/app.toml # 命令二 sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \ \"$PRUNING_KEEP_RECENT\"/" $HOME/.celestia-app/config/app.toml # 命令三 sed -i -e "s/^pruning-interval *=.*/pruning-interval = \ \"$PRUNING_INTERVAL\"/" $HOME/.celestia-app/config/app.toml 2.4 配置验证者节点模式sed -i.bak -e "s/^mode *=.*/mode = \"validator\"/" $HOME/.celestia-app/config/config.toml 2.5 重置网络通过这一步,会删除 data 文件夹的内容。(你可以理解为给你的手机恢复出厂设置)celestia-appd tendermint unsafe-reset-all --home $HOME/.celestia-app 2.6 用快照快速同步数据如果从 Genesis 下载数据的话,可能会花费很久很久的时间,而从快照同步数据(事实上这一步我也大概花了2个小时)会节省大量的时间。 复制粘贴以下命令:# 命令一 cd $HOME # 命令二 rm -rf ~/.celestia-app/data # 命令三 mkdir -p ~/.celestia-app/data # 命令四 SNAP_NAME=$(curl -s https://snaps.qubelabs.io/celestia/ | \ egrep -o ">mamaki.*tar" | tr -d ">") # 命令五 wget -O - https://snaps.qubelabs.io/celestia/${SNAP_NAME} | tar xf - \ -C ~/.celestia-app/data/ 2.7 用 SystemD 启动 celestia-app用 SystemD 的原因简单理解为让 celestia-app 运行的更稳定 用以下命令(直接复制粘贴,以下是一个命令)创建 Celestia-App SystemD File:sudo tee <<EOF >/dev/null /etc/systemd/system/celestia-appd.service [Unit] Description=celestia-appd Cosmos daemon After=network-online.target [Service] User=$USER ExecStart=$HOME/go/bin/celestia-appd start Restart=on-failure RestartSec=3 LimitNOFILE=4096 [Install] WantedBy=multi-user.target EOF 如果这个文件创建成功的话,你运行下面的命令将会看到它的内容:cat /etc/systemd/system/celestia-appd.service 激活并启动 celestia-appsystemctl enable celestia-appd systemctl start celestia-appd 检查是否启动成功systemctl status celestia-appd 检查实时的运行日志journalctl -u celestia-appd.service -f 检查节点是否在同步数据curl -s localhost:26657/status | jq .result | jq .sync_info 确保在结果中看到 "catching_up": false ,不然的话就让它一直运行,别管它,等它同步成功。2.8 创建钱包celestia-appd config keyring-backend test celestia-appd keys add validator 之后保存助记词!!! 然后去官方 Discord 领水,在 `#arabica-faucet` 频道发送以下命令,记得替换你的地址$request celestia1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 等到领取成功后,可以输入以下命令查看是否领取成功,记得替换成你的地址celestia-appd start # 这里是一个命令,是因为格式换行了。不要误认为是两行!!! celestia-appd query bank balances celestia1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2.9 将自己的代币委托给自己创建一个环境变量保存你的地址# 把下面的 <validator-address> 换成你的地址 VALIDATOR_WALLET=<validator-address> 运行以下命令,将自己的代币委托给自己,注意将 celestiavaloper1q3v5cugc8cdpud87u4zwy0a74uxkk6u4q4gx4p 替换成你自己的地址celestia-appd tx staking delegate \ celestiavaloper1q3v5cugc8cdpud87u4zwy0a74uxkk6u4q4gx4p 1000000utia \ --from=$VALIDATOR_WALLET --chain-id=mamaki 3. 部署 celestia-node3.1 安装 celestia-node输入以下命令去安装,一行一个,复制粘贴。cd $HOME rm -rf celestia-node git clone https://github.com/celestiaorg/celestia-node.git cd celestia-node/ git checkout tags/v0.3.0-rc2 make install 执行完毕后输入这个命令去确认是否安装成功:如果安装成功,则会出来这个结果:Semantic version: v0.3.0-rc2 Commit: 89892d8b96660e334741987d84546c36f0996fbe 3.2 初始化 Bridge Nodecelestia bridge init 如果你需要指定端口和 IP,你可以这么做(如果你不理解什么是端口和IP,可以直接不管)celestia bridge init --core.ip <ip-address> --core.grpc.port <port> 3.3 运行 Bridge Nodecelestia bridge start 3.4 用 SystemD 启动 Bridge Node用 SystemD 还是一样的原因,更稳定。 使用以下命令**(这是一个命令,一次性复制粘贴完)**创建 SystemD 配置文件sudo tee <<EOF >/dev/null /etc/systemd/system/celestia-bridge.service [Unit] Description=celestia-bridge Cosmos daemon After=network-online.target [Service] User=$USER ExecStart=$HOME/go/bin/celestia bridge start Restart=on-failure RestartSec=3 LimitNOFILE=4096 [Install] WantedBy=multi-user.target EOF 如果创建成功,你同样可以用这个命令去查看文件内容cat /etc/systemd/system/celestia-bridge.service 激活并运行,同时查看日志systemctl enable celestia-bridge systemctl start celestia-bridge && journalctl -u \ celestia-bridge.service -f 4. 运行 Validator Node连接到 Mamaki 网络# 自己起一个名字 MONIKER="Chuck's Validator Node" # 上一步创建的钱包地址 VALIDATOR_WALLET="validator" celestia-appd tx staking create-validator \ --amount=1000000utia \ --pubkey=$(celestia-appd tendermint show-validator) \ --moniker=$MONIKER \ --chain-id=mamaki \ --commission-rate=0.1 \ --commission-max-rate=0.2 \ --commission-max-change-rate=0.01 \ --min-self-delegation=1000000 \ --from=$VALIDATOR_WALLET \ --keyring-backend=test 然后会问你是否确认交易,输入 y,就像下面一样confirm transaction before signing and broadcasting [y/N]: y 🎉 完成! ## Publication Information - [Chuck](https://paragraph.com/@chuck-3/): Publication homepage - [All Posts](https://paragraph.com/@chuck-3/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@chuck-3): Subscribe to updates - [Twitter](https://twitter.com/ChuckGao888): Follow on Twitter