配置要求:
4 核 8 G,磁盘空闲位置 >= 250 GB,1 Gbps 下载带宽/ 100 Mbps上传带宽
本文使用的系统为:Ubuntu Linux 20.04 (LTS) x64
安装运行节点所必要的东西,首先升级 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
如果安装成功,应该是像我这个样子的:
复制以下命令并执行,不要复制注释
# 命令一
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
复制以下命令,一行一个
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
如果你的磁盘空间不是很大的话,你可以修改 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
sed -i.bak -e "s/^mode *=.*/mode = \"validator\"/" $HOME/.celestia-app/config/config.toml
通过这一步,会删除 data 文件夹的内容。(你可以理解为给你的手机恢复出厂设置)
celestia-appd tendermint unsafe-reset-all --home $HOME/.celestia-app
如果从 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/
用 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-app
systemctl 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
,不然的话就让它一直运行,别管它,等它同步成功。
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
创建一个环境变量保存你的地址
# 把下面的 <validator-address> 换成你的地址
VALIDATOR_WALLET=<validator-address>
运行以下命令,将自己的代币委托给自己,注意将 celestiavaloper1q3v5cugc8cdpud87u4zwy0a74uxkk6u4q4gx4p 替换成你自己的地址
celestia-appd tx staking delegate \
celestiavaloper1q3v5cugc8cdpud87u4zwy0a74uxkk6u4q4gx4p 1000000utia \
--from=$VALIDATOR_WALLET --chain-id=mamaki
输入以下命令去安装,一行一个,复制粘贴。
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
执行完毕后输入这个命令去确认是否安装成功:
celestia version
如果安装成功,则会出来这个结果:
Semantic version: v0.3.0-rc2
Commit: 89892d8b96660e334741987d84546c36f0996fbe
celestia bridge init
如果你需要指定端口和 IP,你可以这么做(如果你不理解什么是端口和IP,可以直接不管)
celestia bridge init --core.ip <ip-address> --core.grpc.port <port>
celestia bridge start
用 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
连接到 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
🎉 完成!