最新版本请参考 https://github.com/iotexproject/iotex-bootstrap/blob/master/README.md
以下是当前我们使用的软件版本:
- 主网:v2.4.4
如果你要启动节点加入测试网,请点击加入测试网
以下是启动 IoTeX 节点的推荐方式
所有步骤已集成在scripts/all_in_one_mainnet.sh, 可以直接
sh scripts/all_in_one_mainnet.sh
- 提取(pull) docker镜像
docker pull iotex/iotex-core:v2.4.4
- 使用以下命令设置运行环境
mkdir -p ~/iotex-var
cd ~/iotex-var
export IOTEX_HOME=$PWD
mkdir -p $IOTEX_HOME/data
mkdir -p $IOTEX_HOME/log
mkdir -p $IOTEX_HOME/etc
curl https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/v2.4.4/config_mainnet.yaml > $IOTEX_HOME/etc/config.yaml
curl https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/v2.4.4/genesis_mainnet.yaml > $IOTEX_HOME/etc/genesis.yaml
curl https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/v2.4.4/trie.db.patch > $IOTEX_HOME/data/trie.db.patch
-
编辑
$IOTEX_HOME/etc/config.yaml, 查找externalHost和producerPrivKey, 取消注释行并填写您的外部 IP 和私钥。如果producerPrivKey放空,你的节点将被分配一个随机密钥。 -
下载全量数据快照, 请运行以下命令:
curl -L -C - -o $IOTEX_HOME/data.tar.gz https://t.iotex.me/mainnet-data-snapshot-core-latest
- 解压数据包
tar -xzf $IOTEX_HOME/data.tar.gz -C $IOTEX_HOME/data/
对于高级用户,可以考虑以下三个选项:
- 选项1:如果计划将节点作为网关运行,还需要额外下载带有索引数据的快照
curl -L -C - -o $IOTEX_HOME/data_index.tar.gz https://t.iotex.me/mainnet-data-snapshot-gateway-latest
tar -xzf data_index.tar.gz
如果需要以 archive 模式运行提供全量历史数据,请转到 Archive Node
- 选择2:如果计划从 0 区块高度开始同步链上数据而不使用来自以太坊旧的节点代表数据,执行以下命令设置旧的节点代表数据:
curl -L -C - -o $IOTEX_HOME/poll.tar.gz https://storage.iotex.io/poll.mainnet.tar.gz; tar -xzf $IOTEX_HOME/poll.tar.gz --directory $IOTEX_HOME/data
- 选择3:如果计划从 0 区块高度开始同步链并从以太坊获取旧的节点代表数据,请更改 config.yaml 中的
gravityChainAPIs并在支持以太坊存档模式的情况下使用您的 infura 密钥,或将 API 端点更改为您有权限访问的以太坊存档节点。
- 运行以下命令以启动节点:
docker run -d --restart on-failure --name iotex \
-p 4689:4689 \
-p 8080:8080 \
-v=$IOTEX_HOME/data:/var/data:rw \
-v=$IOTEX_HOME/log:/var/log:rw \
-v=$IOTEX_HOME/etc/config.yaml:/etc/iotex/config_override.yaml:ro \
-v=$IOTEX_HOME/etc/genesis.yaml:/etc/iotex/genesis.yaml:ro \
iotex/iotex-core:v2.4.4 \
iotex-server \
-config-path=/etc/iotex/config_override.yaml \
-genesis-path=/etc/iotex/genesis.yaml
现在您的节点应该已经被成功启动了!
如果您还希望使节点成为网关,可以处理用户的API请求,请改用以下命令:
docker run -d --restart on-failure --name iotex \
-p 4689:4689 \
-p 14014:14014 \
-p 8080:8080 \
-v=$IOTEX_HOME/data:/var/data:rw \
-v=$IOTEX_HOME/log:/var/log:rw \
-v=$IOTEX_HOME/etc/config.yaml:/etc/iotex/config_override.yaml:ro \
-v=$IOTEX_HOME/etc/genesis.yaml:/etc/iotex/genesis.yaml:ro \
iotex/iotex-core:v2.4.4 \
iotex-server \
-config-path=/etc/iotex/config_override.yaml \
-genesis-path=/etc/iotex/genesis.yaml \
-plugin=gateway
- 确保您的防火墙和负载均衡器(如果有)上的TCP端口4689, 8080(14014如果节点启用了网关)已打开。
这不是我们推荐的启动 IoTeX 节点的首选方式
-
使用以下命令设置环境: 与加入主网的步骤 2 相同
-
构建服务器二进制文件:
git clone https://github.com/iotexproject/iotex-core.git
cd iotex-core
git checkout v2.4.4
// optional
export GOPROXY=https://goproxy.io
go mod download
make clean build-all
cp ./bin/server $IOTEX_HOME/iotex-server
-
编辑配置 与加入主网的步骤 3 相同。如果不将它们放在
/var/data/下,请确保将 config.yaml 中的所有数据库路径更新到正确的位置 -
从数据快照启动 与加入主网的步骤 4 相同
-
运行以下命令以启动节点:
nohup $IOTEX_HOME/iotex-server \
-config-path=$IOTEX_HOME/etc/config.yaml \
-genesis-path=$IOTEX_HOME/etc/genesis.yaml &
现在此节点应该已成功启动。
如果您还希望使节点成为网关,可以处理用户的API请求,请改用以下命令:
nohup $IOTEX_HOME/iotex-server \
-config-path=$IOTEX_HOME/etc/config.yaml \
-genesis-path=$IOTEX_HOME/etc/genesis.yaml \
-plugin=gateway &
- 确保您的防火墙和负载均衡器(如果有)上的TCP端口4689, 8080(14014如果节点启用了网关)已打开。
你可以安装 ioctl (用于与IoTeX区块链交互的命令行工具)
curl https://raw.githubusercontent.com/iotexproject/iotex-core/master/install-cli.sh | sh
您可以将ioctl指向您的节点(如果您启用网关插件):
ioctl config set endpoint localhost:14014 --insecure
或者您可以将它指向我们的API节点:
- 主网安全端口:
api.iotex.one:443 - 主网非安全端口:
api.iotex.one:80
如果你准备使用非安全端口,你需要添加--insecure参数。
生成密钥:
ioctl account create
获得当前epoch共识节点的数量:
ioctl node delegate
参考 CLI document 获得更多细节
获取奖励:
ioctl action claim ${amountInIOTX} -l 10000 -p 1 -s ${ioAddress|alias}
通过Tube服务将IoTeX令牌交换到以太坊上的ERC20令牌:
ioctl action invoke io1p99pprm79rftj4r6kenfjcp8jkp6zc6mytuah5 ${amountInIOTX} -s ${ioAddress|alias} -l 400000 -p 1 -b d0e30db0
单击 IoTeX Tube docs 获取tube服务的详细文档。
可以使用以下命令访问容器(container)日志。
docker logs iotex
内容可以用以下命令筛选:
docker logs -f --tail 100 iotex |grep --color -E "epoch|height|error|rolldposctx"
使用--name=iotex启动container时,你必须在产生一个新的container之前先移除之前的container
docker stop iotex
docker rm iotex
可以使用以下命令“停止”和“重新启动”container:
docker stop iotex
docker start iotex
确保你已经设置了$IOTEX_HOME,并且所有文件(configs、dbs 等)都放在正确的位置(请参阅加入“主网”)。
请使用以下命令升级主网节点。 默认情况下,它将升级到最新的主网版本:
sudo bash # If your docker requires root privilege
bash <(curl -s https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/master/scripts/setup_fullnode.sh)在主网上启用 网关
sudo bash # If your docker requires root privilege
bash <(curl -s https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/master/scripts/setup_fullnode.sh) plugin=gateway如果需要停止自动升级 cron job 和 iotex 服务器程序,您可以运行以下指令:
sudo bash # If your docker requires root privilege
bash <(curl -s https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/master/scripts/stop_fullnode.sh)为服务更多详细链信息的 API 请求,启用网关插件的节点将执行额外的索引。例如区块中的操作数量或通过哈希查询操作信息。
对外提供交易日志查询(GetTransactionLogByActionHash、GetTransactionLogByBlockHeight)的节点应安装 v2.4.4 引入的交易日志补丁,它会修正一组历史合约内转账记录。不对外提供这些查询的 delegate / 全节点无需安装。
- 将补丁文件下载到节点的 data 目录,并校验其 checksum:
curl https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/v2.4.4/txlog.db.patch > $IOTEX_HOME/data/txlog.db.patch
echo "dee9406afc991d5439ab4c27bc85fa658e1fb241ddabe1cc5fef18f27d728986 $IOTEX_HOME/data/txlog.db.patch" | sha256sum -c
- 在
$IOTEX_HOME/etc/config.yaml的chain:段中添加:
chain:
patchTransactionLogPath: /var/data/txlog.db.patch- 重启节点。
重要: 仅当补丁文件确实存在于该路径时才设置
patchTransactionLogPath—— 若配置了该路径但文件缺失,节点将无法启动。该补丁为只读,不会改变余额、收据或区块哈希。详见 v2.4.4 release note。
请参考 此处 了解常见问题。