# Chainflip:可能是最详细的validator节点搭建教程

By [syskey](https://paragraph.com/@syskeys) · 2022-11-19

---

项目介绍
----

[Chainflip](https://twitter.com/Chainflip) 是一种去中心化、无需信任的协议，可实现不同区块链之间的跨链交换。

我们消除了任何类型的用户障碍或繁重的权衡，因此无需以前的加密知识，只需点击几下即可交换您的代币。

项目融资
----

*   [600W美元](https://www.coindesk.com/markets/2021/08/19/cross-chain-protocol-chainflip-raises-6m-to-fund-growth-security-audits/) 由 Framework Ventures 领投。
    
*   [1000W美元](https://www.theblock.co/post/146223/chainflip-labs-secures-10-million-for-cross-chain-dex) 由 Framework Ventures、Blockchain Capital 和 Pantera Capital 领投。
    

测试网节点介绍
-------

详细的官方介绍可以查看[官方推文线程](https://twitter.com/Chainflip/status/1593194901529059328)，我这里简单说下：

1、这是个长期运行的测试网，如果要运行验证节点，要做好长期运行的准备，并且目前不是激励性测试网。

2、运行测试网验证器，最好是具备一些Linux系统的基础知识。

3、虽然说不是激励性测试网，但官方[twitter说了](https://twitter.com/Chainflip/status/1593194909821206533?s=20&t=Uz7fkpBqOvucuqZ2IGlN9g)，虽然不会立即受到激励，但我们会在未来为大家提供许多惊喜，以奖励大家的参与。

Validator(验证器)搭建教程
------------------

在教程开始之前非常感谢[小师妹](https://twitter.com/Monica_xiaoM)的提醒，要不我就可能错过了。

### 第一步：准备工作

**1.1 服务器要求**

*   操作系统：Ubuntu 20.04 - 请仅使用此操作系统
    
*   CPU：4 GHz | 4+ 核心，专用更好
    
*   内存：8GB
    
*   磁盘：50 GB（这可能会随着时间的推移而增加）
    
*   带宽：推荐 1GBps 连接，每月 100 GB 组合上行/下行带宽
    

该机器必须 24/7 全天候可用，因此建议您仅在具有稳定可靠的互联网连接的机器上尝试此操作，例如 VPS 或专用服务器。

**1.2 服务器必须开放以下端口**

*   30333 (TCP)
    
*   8078 (TCP)
    

**1.3 必须准备两个以太坊钱包（请一定要用新的钱包地址，因为需要用到钱包私钥）**

*   Stake wallet : 用来质押的钱包 （也需要测试网 Goerli ETH，数量够发起交易就行，需要用此钱包地址到官方discord中领水）
    
*   Validator wallet : 操作验证器的钱包 (钱包内请提前准备至少0.1 Goerli ETH的测试币)
    

**1.4 Alchemy Goerli测试网的RPC链接**

这一块就不详细的介绍了，网上有很多教程，这里附上[申请RPC的官方教程](https://docs.alchemy.com/docs/how-to-develop-an-nft-smart-contract-erc721-with-alchemy#create-a-free-alchemy-account)。最终我们需要的是HTTPS和WEBSOCKETS的链接地址。注意：key别泄露了。

![https和wss链接信息](https://storage.googleapis.com/papyrus_images/626db5ba9e55976f4b7ff883b9719467e8517026c59b73a000f57ef49ebcb8a5.png)

https和wss链接信息

### 第二步：开始搭建

正式开始之前，先说明下，我的教程和官方有些不太一样，主要是我没有创建验证器专用的账号，我是直接在root用户下进行安装的。当然为了安全来说，创建专用账户会好些，但都是相对的。不啰嗦了，正式开始。

**2.1 获取Validator软件**

    sudo mkdir -p /etc/apt/keyrings \
    && curl -fsSL repo.chainflip.io/keys/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/chainflip.gpg
    

![](https://storage.googleapis.com/papyrus_images/ee8ca21daa2492d882c685cea1aca1a716bbe5771485558a457c995735867936.png)

**2.2 添加源信息**

    echo "deb [signed-by=/etc/apt/keyrings/chainflip.gpg] https://repo.chainflip.io/perseverance/ focal main" | sudo tee /etc/apt/sources.list.d/chainflip.list
    

![](https://storage.googleapis.com/papyrus_images/7e9bd09f13186dfd0d396ec7ac405783c443165ac71e20df052014089fc8043e.png)

**2.3 更新系统，并安装Validator软件**

    sudo apt-get update \
    && sudo apt-get install -y chainflip-cli chainflip-node chainflip-engine
    

![](https://storage.googleapis.com/papyrus_images/860356917981efd990ea512f6a9c73094b9bbe1bb95238121aad3e86b98b3ff6.png)

这一步更新可能会慢些，耐心等待完成。

### 第三步：配置和生成验证器密钥

**3.1 创建密钥保存的目录,并进入此目录**

    sudo mkdir /etc/chainflip/keys \
    && cd /etc/chainflip/keys
    

**3.2 还记的在1.3步骤中提前准备的两个钱包地址吗？现在就需要用到Validator wallet的私钥了，将验证器钱包的私钥导出，并运行下面的命令(注意将“你的验证器钱包私钥”替换为自己的钱包私钥)。注意：如果私钥前面有0x，请删除0x。**

    YOUR_VALIDATOR_WALLET_PRIVATE_KEY=你的验证器钱包私钥 \
    && echo -n "YOUR_VALIDATOR_WALLET_PRIVATE_KEY" |  sudo tee /etc/chainflip/keys/ethereum_key_file
    

**3.3 生成验证器Key**

    chainflip-node key generate
    

![](https://storage.googleapis.com/papyrus_images/45209606e13d1a4620a86b23f9c72055ced2fa7b19e00b9e3f396e81f7859d9b.png)

*   Secret phrase：验证器的助记词（不要泄露）
    
*   Secret seed：验证器私钥（不要泄露）
    
*   **Public key (SS58)：验证器公钥（stake时需要此地址）**
    

**3.3.1 将验证器私钥写入到文件，需要把下面命令中的YOUR\_CHAINFLIP\_SECRET\_SEED替换为3.3步骤中Secret seed显示的内容（包含0x）。**

    SECRET_SEED=YOUR_CHAINFLIP_SECRET_SEED \
    && echo -n "${SECRET_SEED:2}" | sudo tee /etc/chainflip/keys/signing_key_file
    

**3.4 生成节点密钥**

    sudo chainflip-node key generate-node-key --file /etc/chainflip/keys/node_key_file
    

已经过以上步骤后，你应该能在`/etc/chainflip/keys`目录中看到如下三个文件。**（请不要向任何人共享这些文件，绝对私密文件。）**

![](https://storage.googleapis.com/papyrus_images/f61eea274178d0fa5faa4d4cefb8df2e5abfaafd4ddff4489ee37aab14d9b5a6.png)

### 第四步：创建配置文件

**4.1 创建配置文件目录及文件**

    sudo mkdir -p /etc/chainflip/config \
    && sudo touch /etc/chainflip/config/Default.toml
    

**4.2 执行下面的命令，在执行之前，需要先将IP\_ADDRESS\_OF\_YOUR\_NODE字段修改为自己的服务器公网IP，将1.4步骤中申请的RPC链接分别替换WSS\_ENDPOINT\_FROM\_ETHEREUM\_CLIENT和HTTPS\_ENDPOINT\_FROM\_ETHEREUM\_CLIENT字段，其他内容不需要修改，然后执行即可。**

    cat>/etc/chainflip/config/Default.toml<<EOF
    #Default configurations for the CFE
    [node_p2p]
    node_key_file = "/etc/chainflip/keys/node_key_file"
    ip_address="IP_ADDRESS_OF_YOUR_NODE"
    port = "8078"
    
    [state_chain]
    ws_endpoint = "ws://127.0.0.1:9944"
    signing_key_file = "/etc/chainflip/keys/signing_key_file"
    
    [eth]
    #Ethereum RPC endpoints (websocket and http for redundancy).
    ws_node_endpoint = "WSS_ENDPOINT_FROM_ETHEREUM_CLIENT"
    http_node_endpoint = "HTTPS_ENDPOINT_FROM_ETHEREUM_CLIENT"
    
    #Ethereum private key file path. This file should contain a hex-encoded private key.
    private_key_file = "/etc/chainflip/keys/ethereum_key_file"
    
    [signing]
    db_file = "/etc/chainflip/data.db"
    EOF
    

完成后的样子大概如下图所示

![](https://storage.googleapis.com/papyrus_images/1d673b33587a525a34d722419f92f775d0ffb84bd196a9b528ce075cbe66d298.png)

### 第五步：启动节点

**5.1 启动验证节点**

    sudo systemctl start chainflip-node
    

**5.1.1 查看验证节点状态（active (running) 代表运行正常）**

    sudo systemctl status chainflip-node
    

![](https://storage.googleapis.com/papyrus_images/ce29bc0d6aeeb2c9f4c6c853cd8efc60387e27324e28cf2e22fbae207f2be939.png)

**5.1.2 设置chainflip-node开机启动**

    sudo systemctl enable chainflip-node
    

**5.1.3 查看同步日志，整个同步速度还是很快的基本上半个小时左右就能同步完成了。**

    tail -f /var/log/chainflip-node.log
    

![](https://storage.googleapis.com/papyrus_images/0adbb1eb36bfb1841e4a05300d4e12cf979f4169eadc563909aba25405d82915.png)

*   Syncing：代表正在同步
    
*   target：当前网络高度
    
*   best：当前同步进度
    
*   finalized：当前已同步完成
    
*   **Idle： 代表当前节点已经同步完成**
    

退出查看日志按键盘`ctrl/control + c`即可。

**5.2 启动chainflip-engine**

**重要说明：要运行此步骤必须要等待节点同步完成才可以，不然会报错。**

**重要说明：要运行此步骤必须要等待节点同步完成才可以，不然会报错。**

**重要说明：要运行此步骤必须要等待节点同步完成才可以，不然会报错。**

    sudo systemctl start chainflip-engine
    

**5.2.1 查看chainflip-engine状态（active (running) 代表运行正常）**

    sudo systemctl status chainflip-engine
    

![](https://storage.googleapis.com/papyrus_images/7cd60a4c021aa9af2765af95899dc66e02f011b7eb6d2bde5e20e6805ab03d37.png)

**5.2.2 设置chainflip-engine开机启动**

    sudo systemctl enable chainflip-engine
    

**5.2.3 查看chainflip-engine日志**

    tail -f /var/log/chainflip-engine.log
    

日志会显示我们当前还没有质押的警告，这个我们接下来操作质押。

### 第六步：质押

**6.1 在质押之前，我们需要先到**[**官方discord**](https://discord.com/invite/fV963ApV5U)**中领水，进入discord中后先在join-testnet频道点击按钮才能显示出来faucet频道。**

![](https://storage.googleapis.com/papyrus_images/c7979f052820756de472b208feed8099b901bece13b2f72bd34a121b852b7e26.png)

**6.2 在faucet频道，发送** `!drip stake钱包地址`**即可领取官方发的测试币TFLIP。stake钱包就是我们在1.3步骤中提前准备的钱包。**

**6.3 打开**[**官方stake网站**](https://stake-perseverance.chainflip.io/auctions)**，使用我们的stake钱包链接网站。然后点击Add node按钮，在弹出的输入框中填写我们的验证器公钥（就是3.3步骤中生成的SS58类型的公钥），填写质押的数量，最后点击下方按钮即可。这里需要两次操作approval和stakes因为我操作过了， 所以只显示了stakes。**

![](https://storage.googleapis.com/papyrus_images/8357b58974fe088a69d87b5ced9458cece0e7fa1aa49a41ed87b7df2aed455a9.png)

**6.4 当我们在网站上质押完成后，可以在My nodes页面查看验证器信息。你现在查看到的状态可能和我显示的不一样，这是因为在网站上质押之后，还需要到服务器上设置验证器的其他信息。**

![](https://storage.googleapis.com/papyrus_images/669d07141b8bc7f9d7379b2b45e29d7a81eaf23a46dd8f2e87b51e1e47edff39.png)

### 第七步：在服务器上上设置验证器的其他信息

**7.1 注册验证器密钥**

    sudo chainflip-cli \
          --config-path /etc/chainflip/config/Default.toml \
          register-account-role Validator
    

**7.2 激活验证器**

    sudo chainflip-cli \
        --config-path /etc/chainflip/config/Default.toml \
        activate
    

**7.3 开启rotate**

    sudo chainflip-cli \
        --config-path /etc/chainflip/config/Default.toml rotate
    

**7.4 可选，设置验证器的名字，将下面命令中的**`my-name`**修改为其他任何你想显示的名字**

    sudo chainflip-cli \
        --config-path /etc/chainflip/config/Default.toml \
        vanity-name my-name
    

**7.5 当运行完上面的命令后，还需要重启下chainflip-engine，稍等片刻后，再到stake网站上查看验证器状态就会发生变化了。**

    sudo systemctl restart chainflip-engine
    

最后
--

整个教程基本到这里就结束了，如果你在运行过程中有什么问题，请到官方Discord中询问。

如果觉得教程还不错，请多多点赞关注转发哈。

文章引用
----

*   [官方blog](https://blog.chainflip.io/cn/)
    
*   [官方twitter](https://twitter.com/chainflip)
    
*   [官方discord](https://discord.com/invite/fV963ApV5U)
    
*   [官方节点运行文档](https://docs.chainflip.io/perseverance-validator-documentation/)

---

*Originally published on [syskey](https://paragraph.com/@syskeys/chainflip-validator)*
