Injective | Documentation
InjectiveGithub
Injective | 中文文档
Injective | 中文文档
  • 关于 Injective
  • 快速入门
    • 钱包
      • 创建钱包
      • 账户
      • 质押
      • 治理
      • 拍卖
    • 代币标准
      • INJ 代币
      • Token Factory
      • CW20 标准
    • 交易
      • Gas 和 Fees
  • 指南
    • 创建钱包
    • 桥接
      • From Ethereum
      • Using Wormhole
      • Using IBC
      • From Solana
    • 发布代币
    • 发布市场
    • Denom 元数据
    • 获取INJ
  • 工具包
    • injectived
      • 安装 injectived
      • 使用 injectived
      • 指令
    • Injective TS SDK
    • Injective Go SDK
    • Injective Python SDK
    • Injective CW SDK
    • The Graph
  • 参考
  • 术语表
  • 开发者
    • 快速入门
      • 指南
        • 测试网提案
        • 转换地址
        • 计算
          • 最低价格刻度
          • 最低数量刻度
    • 交易所开发者
      • 构建 DEX
      • 预言机提供方
    • Cosmwasm 开发者
      • 您的首个智能合约
      • 指南
        • 本地开发
        • 主网开发
        • 给部署地址白名单
        • 创建您的 Swap 合约
        • 创建 UIs
      • CW20 适配器
      • Injective Test Tube
    • 模块
      • Injective
        • 拍卖(Auction)
          • State
          • 消息
          • EndBlock
          • 事件
          • 参数
        • 交易所(Exchange)
          • 衍生品市场概念
          • 现货市场概念
          • 二元期权市场概念
          • 其他概念
          • 状态
          • 状态转换
          • 消息
          • 提案
          • BeginBlock
          • EndBlock
          • 事件
          • 参数
          • MsgPrivilegedExecuteContract
        • 保险(Insurance)
          • 状态
          • 状态转换
          • 消息
          • EndBlock
          • 事件
          • 参数
          • 改进
        • OCR
          • 概念
          • 状态
          • 消息
          • 提案
          • BeginBlock
          • 钩子(Hooks)
          • 事件
          • 参数
        • 预言机(Oracle)
          • 状态
          • Keeper
          • 消息
          • 提案
          • 事件
          • 改进
        • Peggy
          • 定义
          • 工作流
          • 状态
          • 消息
          • 处罚
          • EndBlock
          • 事件
          • 参数
          • 中继语义
          • 改进
        • 权限(Permissions)
          • 概念
          • 状态
          • 状态转换
        • 代币工厂(TokenFactory)
          • 概念
          • 状态
          • 消息
          • 事件
          • 参数
        • WasmX
          • 概念
          • 数据
          • 提案
          • 消息
          • 参数
      • 核心
        • Auth
        • AuthZ
        • 银行(Bank)
        • 共识(Consensus)
        • 危机(Crisis)
        • 分发(Distribution)
        • 证据(Evidence)
        • 费用授权(Feegrant)
        • 治理(Gov)
        • 群组(Group)
        • 铸造(Mint)
        • NFT
        • 参数(Params)
        • 惩罚(Slashing)
        • 质押(Staking)
        • 升级(Upgrade)
        • Circuit
        • Genutils
    • dApps 开发文档
  • 节点
    • 快速入门
      • 和节点交互
      • 运行节点
        • 设置密钥环
        • 加入网络
        • Cosmovisor
        • 升级您的节点
    • 验证者
      • 主网
        • Peggo
        • 规范链升级
          • Upgrade to 10002-rc1
          • Upgrade to 10002-rc2
          • Upgrade to 10003-rc1
          • Upgrade to 10004-rc1
          • Upgrade to 10004-rc1-patch
          • Upgrade to 10005-rc1
          • Upgrade to 10006-rc1
          • Upgrade to 10007-rc1
          • Upgrade to 10008 - Camelot
          • Upgrade to 10009
          • Upgrade to v1.10
          • Upgrade to v1.11
          • Upgrade to v1.12.0 - Volan
          • Upgrade to v1.12.1
          • Upgrade to v1.13.0 - Altaris
          • Upgrade to v1.13.2
          • Upgrade to v1.13.3
          • Upgrade to v1.14.0
          • Upgrade to v1.14.1
      • 测试网
        • 测试网 Peggo
    • 公共端点
    • 高级端点
    • Injective 索引器设置
  • 交易员
    • 快速入门
    • 文档
    • API 参考
  • 常用链接
    • Injective 101
    • Injective Hub
    • Injective 浏览器
    • Chain API Reference
    • Indexer API Reference
    • 测试网水龙头
Powered by GitBook
On this page
  • 目录
  • 安装
  • 通过Go安装
  • 环境变量
  • 目录结构
  • 运行 Cosmovisor
  • 处理链升级
  • 将 Cosmovisor 作为 Systemd 服务运行
Export as PDF
  1. 节点
  2. 快速入门
  3. 运行节点

Cosmovisor

Previous加入网络Next升级您的节点

Last updated 2 months ago

Cosmovisor 是一个为基于 Cosmos SDK 的区块链设计的进程管理器,简化了二进制(链)升级的管理。本文提供了逐步的说明,帮助您为 Injective 网络节点设置 Cosmovisor。

Note: 这些说明假设您已经拥有现有的链二进制文件(例如 injectived)以及一个正常工作的 Go 环境,如果您选择从源代码安装 Cosmovisor。根据您的具体设置,调整名称和路径。


目录


安装

通过Go安装

如果您已安装 Go,可以使用以下命令安装 Cosmovisor:

go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.5.0

Tip: 确保您的 Go 二进制安装路径(通常是 $GOPATH/bin 或 $HOME/go/bin)已添加到系统的 PATH 中。您可以通过运行以下命令来验证安装:

which cosmovisor

环境变量

设置以下环境变量,以便 Cosmovisor 知道要运行哪个二进制文件以及在哪里找到它:

  • DAEMON_NAME 您的链二进制文件的名称(例如,injectived)。

  • DAEMON_HOME 您的节点的主目录(例如,~/.injectived)。

您可以在 shell 配置文件中设置这些变量(如 ~/.bashrc 或 ~/.profile),或者直接在终端会话中导出它们:

export DAEMON_NAME=injectived
export DAEMON_HOME=~/.injectived

目录结构

Cosmovisor 期望在您的节点主目录中具有特定的文件夹结构:

  1. 创建 Genesis 目录 此目录存放初始(genesis)二进制文件。

mkdir -p $DAEMON_HOME/cosmovisor/genesis/bin
  1. 复制当前二进制文件 将当前的链二进制文件(例如,injectived)放入 genesis 文件夹中。确保文件名与 DAEMON_NAME 值匹配(见下节)。

cp $(which injectived) $DAEMON_HOME/cosmovisor/genesis/bin/injectivedcp $(which injectived) $DAEMON_HOME/cosmovisor/genesis/bin/injectived

运行 Cosmovisor

不要直接运行链的二进制文件,而是通过执行以下命令启动您的节点:

cosmovisor run start

Cosmovisor 将会:

  • 在 $DAEMON_HOME/cosmovisor/genesis/bin(或适当的升级文件夹)中查找二进制文件。

  • 使用该二进制文件启动您的节点。

  • 监控任何链上的升级信号,并在需要时自动切换二进制文件。


处理链升级

当链上宣布升级时,准备新二进制文件,以便 Cosmovisor 可以自动切换到它:

  1. 创建升级目录 使用链上提供的升级名称(例如,v1.14.0):

mkdir -p $DAEMON_HOME/cosmovisor/upgrades/<upgrade_name>/bin
  1. 放置新二进制文件 编译或下载新二进制文件,然后将其复制到升级目录中。确保二进制文件名与 DAEMON_NAME 匹配。

cp /path/to/new/injectived $DAEMON_HOME/cosmovisor/upgrades/<upgrade_name>/bin
cp /path/to/new/libwasmvm.x86_64.so $DAEMON_HOME/cosmovisor/upgrades/<upgrade_name>/bin

TIP: 如果您从 GitHub 下载了 injectived 二进制包,我们会将 libwasmvm.x86_64.so 复制到升级 bin 目录。稍后将向 systemd 服务添加一个环境变量,将此目录添加到 LD_LIBRARY_PATH 中。

  1. 升级过程 当达到升级高度时,Cosmovisor 会检测到计划的升级,并自动切换到相应升级文件夹中的二进制文件。

当链上宣布升级时,准备新二进制文件,以便 Cosmovisor 可以自动切换到它。


将 Cosmovisor 作为 Systemd 服务运行

在生产环境中,通常将节点作为 systemd 服务运行。以下是一个示例服务文件。

  1. 创建服务文件

    创建一个文件(例如,/etc/systemd/system/injectived.service),并添加以下内容。根据实际情况调整路径和 <your_username>:

[Unit]
Description=Injective Daemon managed by Cosmovisor
After=network-online.target

[Service]
User=<your_username>
ExecStart=/home/<your_username>/go/bin/cosmovisor run start
Restart=always
RestartSec=3
Environment="DAEMON_NAME=injectived"
Environment="DAEMON_HOME=/home/<your_username>/.injectived"
Environment="PATH=/usr/local/bin:/home/<your_username>/go/bin:$PATH"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Environment="UNSAFE_SKIP_BACKUP=true"
Environment="LD_LIBRARY_PATH=/home/<your_username>/.injectived/cosmovisor/current/bin"

[Install]
WantedBy=multi-user.target
  1. 启用并启动服务

    sudo systemctl daemon-reload
    sudo systemctl enable injectived.service
    sudo systemctl start injectived.service
  2. 检查日志

    确认您的服务运行顺利:

    journalctl -u injectived.service -f

Installation
Installing via Go
Environment Variables
Directory Structure
Running Cosmovisor
Handling Chain Upgrades
Running Cosmovisor as a Systemd Service