介绍

在这里,我们将在容器化环境中安装和运行 Quai Network 的本地实例。本地网络实例包含一个全节点、每个 9 个分片的一个 CPU 矿工,以及多个预加载了 Quai 和 Qi 余额的账户。容器化的本地网络实例旨在为构建者提供一个易于配置、低开销的开发环境。

安装依赖项

要运行 Quai Network 的本地实例,您需要安装一些依赖项。
1

安装 Docker Compose

有两种方法安装 Docker Compose:
  1. 安装 Docker Desktop,其中包含 Docker Compose。(推荐
  2. 通过 CLI 安装 Docker Compose 插件
如果您不确定哪种方法最适合您,请访问安装 Docker Compose 页面了解更多信息。
2

安装本地节点运行器

要安装本地节点运行器,您需要克隆 quai-local-node 仓库并导航到该目录。
git clone https://github.com/dominant-strategies/quai-local-node
cd quai-local-node

运行本地实例

现在我们已经安装了 Docker Compose 并导航到 quai-local-node 仓库,我们可以运行本地网络实例了。

启动

要在 Docker 容器中启动本地网络实例,请运行:
bash docker-compose up -d
运行此命令后,您将看到每个进程启动。应该会初始化一个 go-quai 容器和 9 个 quai-cpu-miner 实例(每个分片一个),如下所示:
[+] Running 10/10
 Container quai-local-node-paxos2-quai-cpu-miner-1   Started
 Container quai-local-node-cyprus1-quai-cpu-miner-1  Started
 Container quai-local-node-cyprus2-quai-cpu-miner-1  Started
 Container quai-local-node-hydra2-quai-cpu-miner-1   Started
 Container quai-local-node-paxos1-quai-cpu-miner-1   Started
 Container quai-local-node-cyprus3-quai-cpu-miner-1  Started
 Container quai-local-node-go-quai-1                 Started
 Container quai-local-node-paxos3-quai-cpu-miner-1   Started
 Container quai-local-node-hydra1-quai-cpu-miner-1   Started
 Container quai-local-node-hydra3-quai-cpu-miner-1   Started

查看日志

要从终端查看 go-quai 容器的日志,请运行:
## 打印全局日志
docker logs quai-local-node-go-quai-1

## 跟踪全局日志
docker logs -f --tail 0 quai-local-node-go-quai-1
如果您想访问特定分片的日志,需要导航到 quai-local-node-go-quai-1 容器并直接打印日志。
## 导航到 go-quai 容器
docker exec -it quai-local-node-go-quai-1 sh

## 跟踪特定区域的日志
tail -f nodelogs/zone-0-0.log

## 跟踪特定地区的日志
tail -f nodelogs/region-1.log

停止

如果您的本地网络实例在后台运行,请运行以下命令停止:
docker-compose down
如果您的本地网络实例在前台运行,您可以退出终端或使用 CTRL+C 停止容器。

自定义网络配置

以下配置部分仅适用于运行非默认配置。如果您只想运行默认的 9 个切片和矿工的网络配置,可以跳过此部分。
quai-local-node 默认配置为运行所有 9 个分片(切片)和每个分片的 CPU 矿工。对于大多数用例,建议运行默认配置。如果您想运行自定义切片配置,下面的部分详细说明了如何操作。 要更改默认的本地网络配置,您需要:
  • config.toml 文件中编辑本地节点正在运行的切片
  • docker-compose.yml 文件中编辑 CPU 矿工的数量以匹配分片的数量
1

配置切片

要开始切片配置,请使用文本编辑器打开节点配置文件:
vim config/go-quai/config.toml
在此目录中是 config.toml 文件。配置文件有一个 slices 变量,默认值为所有 9 个切片。
slices = '[0 0],[0 1],[0 2],[1 0],[1 1],[1 2],[2 0],[2 1],[2 2]'
编辑 slices 变量以匹配您要运行的分片数量。例如,如果您想运行 3 个分片,可以将 slices 变量设置为 [0 0],[0 1],[0 2]
2

配置 CPU 矿工

要编辑 CPU 矿工配置,您需要编辑 docker-compose.yml 文件。使用文本编辑器打开 docker-compose.yml 文件:
vim docker-compose.yml
配置文件中的每个矿工实例都有一个默认为 1replica 变量。如果此值设置为 1,该链的矿工将在启动时启动,如果值设置为 0,矿工将不会在启动时启动。
cyprus1-quai-cpu-miner:
  image: quainetwork/quai-cpu-miner:0.1.0-test.4
  volumes:
    - ./config/quai-cpu-miner/cyprus1-config.yaml:/root/config/config.yaml
  deploy:
    resources:
      limits:
        cpus: '1'
    replicas: 1
  command: ['./build/bin/quai-cpu-miner']
  networks:
    - quainet
我们需要确保为上面在节点中配置的每个切片启动一个 CPU 矿工(replica 设置为 1)。例如,如果我们运行切片 [0 0],[0 1],[0 2],我们需要将 cyprus1、cyprus2 和 cyprus3 矿工的 replica 值设置为 1,将所有其他矿工设置为 0
cyprus1-quai-cpu-miner:
  ...
  replicas: 1

cyprus2-quai-cpu-miner:
  ...
  replicas: 1

cyprus3-quai-cpu-miner:
  ...
  replicas: 1

paxos1-quai-cpu-miner:
  ...
  replicas: 0

etc...
在将节点运行的切片与 CPU 矿工配置匹配后,您可以启动您的自定义本地网络实例。

与本地网络交互

要与本地网络实例交互,您可以使用 Quais SDKJSON RPC API。网络可通过 localhost 上的特定网络端口访问。
分片HTTP 端口WS 端口
Prime90018001
Cyprus90028002
Paxos90038003
Hydra90048004
Cyprus 192008200
Cyprus 292018201
Cyprus 392028202
Paxos 192208220
Paxos 292218221
Paxos 392228222
Hydra 192408240
Hydra 292418241
Hydra 392428242

SDK

您可以使用 Quais SDK 创建连接到本地网络实例的提供者,获取链数据并发送交易。
import { quais } from 'quais'

// 创建本地提供者
const provider = new quais.JsonRpcProvider('http://localhost')

// 获取 cyprus 1 的区块号
const currentBlock = await provider.getBlockNumber('Cyprus1')

JSON RPC API

您可以使用 JSON RPC APIcURL 向本地网络发出请求:
# 获取 paxos 3 gas 价格
curl --request POST \
  --url http://localhost:9222 \
  --header 'Content-Type: application/json' \
  --data '{
  "jsonrpc": "2.0",
  "method": "quai_gasPrice",
  "params": [],
  "id": 1
}'

账户

我们刚刚启动的本地网络为每个分片和账本启动了许多预加载了 Quai 和 Qi 代币的账户。按分片和账本排序的预加载余额账户的完整列表可以在 quai-local-node 仓库的 genallocs 目录中找到。
这些账户仅用于本地测试目的,不应在任何生产环境中使用。它们不安全,仅应用于测试。
为了快速参考,下面是每个分片和账本的 1 个账户:

Quai 账户

分片地址私钥余额
Cyprus10x000001273B55E9e5998328216dB1b130c231221C0xb3c87ca9645adcf75be5c4d6609fd257f897fd53849c7ecca81acae9966a6ec010000 Quai
Cyprus20x010001D025371794a6eDb5feE8aC2F384EdD74630xcea8ebb619f8e4ea11ee75cb72221a6f39591a99d7cf688de9f30832809fb75110000 Quai
Cyprus30x02000415996A1B0cFF4b2FD078c779cF6C3E9AaC0xfc86fae56f462d2ae43bca8f819b1137c9e3150ba3ff79d4d5068b6e39c1c97510000 Quai
Paxos10x10000197Ec7c3e6ce4D9a832c0641528c5e268A60x01d872f0bc5f94490c2ed9026d58a116656dcb3c997f42062d01799e5b45806210000 Quai
Paxos20x11000207A6723c18085c12F50F62929bb78932c40x1d7a3a668ac8b20bf538a6d1060de043f10b1db5f1df2140fa0e8d479820e76310000 Quai
Paxos30x120000833E752B14A00eBB2c00eF0FD7C90C21230xc0061e94c526e7d9d97a2874f129e72e4f821a8f78ca2fd8198c005bc14e2a9210000 Quai
Hydra10x2000011eCb5FDEA6Eb074cbe60b6Ad372948d99a0xc77fb4c5b1612f702ef097561f75ee5876987ef547977020a86528fbc9f7bbbc10000 Quai
Hydra20x2100042dEf9D880e029Ca948f97C180c202bd7430x44af4c54c44d96bbf3d9c602967822246381d2287fe544fd5480d05b25b80bb910000 Quai
Hydra30x2200035A5A89846AD708d8732B6c85dFAbE354890x8cd878d69b1b848b3c98c623e4e56e3b0ed1035984f6f721a99ef716637e338210000 Quai

Qi 账户

分片地址私钥余额
Cyprus10x0080038f1C9a96b196914939301F9a46d7E27e7E0x5b18d340e2e5172a90dfcc43c800519cf4a77b82750b8964b3f421dc929eac53100000 Qi
Cyprus20x01800Daf0f10f7d0CceF2B77893d5a7f86D6D4060x4500c9cef91ac29479cf50a00c49d27ba14e84df83b8e332db34fa1cbdd799b7100000 Qi
Cyprus30x02800a7c404409166D903Dd3421595112f1DaF4D0xbc144acdd4d53488e4005d404f42450a879eb1015a6f4bbf80956b4810b5a068100000 Qi
Paxos10x1080049337283F6c3aDfD535835258a03CF2b9210x511930ce12cbf86325eb2652459b6a47b75ddc892a09549f094f0011062a11f4100000 Qi
Paxos20x1180008531658Aa78161D00689267725C771aD3d0x89086104efd789c7de9ee69beb44ad70818a772a90b6d3f3ec26da930a47a2da100000 Qi
Paxos30x12800163E05c66e107864D9c18067468cf79990f0xa7995e0942e6510a2fd3461c0dbe081fc8e79c6e891fd2fcde5897e41700789a100000 Qi
Hydra10x208000B3ED3a21D2018E72533D55679760C7a8d20x36f009591733e706085ba4b6c3c6bbc8e35fa5e9f075979650523c18f18dacec100000 Qi
Hydra20x218000a39174Db63f0047DC571CB2279d6D294340xf07d9c6d2ee5cd1f5661d87afea21cd21e4a52ff1ea4851b7507b4ef673c4311100000 Qi
Hydra30x228003fD91A5B55dBAfc95384e3A8DBf30B21AA80x2c1b28175b12d8fdeb8355918fcb7492fcbc7b118ecf301cd928477815084312100000 Qi