├── q-testnet
├── assets
│ ├── init
│ ├── 1.png
│ ├── 2.png
│ └── Q.png
└── Readme.md
└── README.md
/q-testnet/assets/init:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # manuals by systemd
2 | [Q Testnet](https://github.com/systemd-run/manuals/tree/main/q-testnet)
3 |
--------------------------------------------------------------------------------
/q-testnet/assets/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/artemsharkUfa/Q-blockchain-manuals/HEAD/q-testnet/assets/1.png
--------------------------------------------------------------------------------
/q-testnet/assets/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/artemsharkUfa/Q-blockchain-manuals/HEAD/q-testnet/assets/2.png
--------------------------------------------------------------------------------
/q-testnet/assets/Q.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/artemsharkUfa/Q-blockchain-manuals/HEAD/q-testnet/assets/Q.png
--------------------------------------------------------------------------------
/q-testnet/Readme.md:
--------------------------------------------------------------------------------
1 | # Q Testnet node installation guide
2 |
3 |
4 | Official links
5 |
6 | Website - [https://q.org/](https://q.org/)
7 |
8 | Mainnet - [https://hq.q.org/](https://hq.q.org/)
9 |
10 | Testnet - [https://hq.qtestnet.org/](https://hq.qtestnet.org/)
11 |
12 | ChainList - [https://chainlist.org/chain/35441](https://chainlist.org/chain/35441)
13 |
14 | Medium - [https://medium.com/q-blockchain](https://medium.com/q-blockchain)
15 |
16 | Reddit - [https://www.reddit.com/r/QBlockchain/](https://www.reddit.com/r/QBlockchain/)
17 |
18 | Twitter - [https://twitter.com/QBlockchain](https://twitter.com/QBlockchain)
19 |
20 |
21 |
22 | Constitution & Whitepaper
23 |
24 | Constitution - [https://q.org/assets/files/Q_Constitution.pdf](https://q.org/assets/files/Q_Constitution.pdf)
25 |
26 | Whitepaper - [https://q.org/assets/files/Q Whitepaper_v1.0.pdf](https://q.org/assets/files/Q%20Whitepaper_v1.0.pdf)
27 |
28 |
29 |
30 | Faucet
31 | [https://faucet.qtestnet.org/](https://faucet.qtestnet.org/)
32 |
33 |
34 | Documentation
35 |
36 | Documentation - [https://docs.q.org/](https://docs.q.org/)
37 |
38 | Source Code - [https://gitlab.com/q-dev](https://gitlab.com/q-dev)
39 |
40 | Security Audit - [https://medium.com/q-blockchain/q-system-contracts-security-audit-e101ea356586](https://medium.com/q-blockchain/q-system-contracts-security-audit-e101ea356586)
41 |
42 |
43 |
44 | Explorer
45 |
46 | [https://explorer.qtestnet.org/](https://explorer.qtestnet.org/)
47 |
48 | [https://stats.qtestnet.org/](https://stats.qtestnet.org/)
49 |
50 | [https://explorer.qtestnet.org/graphiql](https://explorer.qtestnet.org/graphiql)
51 |
52 |
53 |
54 | Official guide
55 |
56 | [https://docs.qtestnet.org/how-to-setup-validator/](https://docs.qtestnet.org/how-to-setup-validator/)
57 |
58 |
59 |
60 |
61 | ## Подготовка сервера при необходимости
62 |
63 |
64 | ```bash
65 | # обновление
66 | apt update && apt upgrade -y
67 |
68 | # установка необходимых утилит
69 | apt install curl iptables build-essential git wget jq make gcc nano tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y
70 |
71 | # установка docker одной строкой
72 | . <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/installers/docker.sh)
73 |
74 | # обновление docker-copmose до v2.5.0
75 | apt purge docker-compose -y
76 | curl -L https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
77 | chmod +x /usr/local/bin/docker-compose
78 | ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
79 | ```
80 |
81 |
82 | ## Начало
83 |
84 | Клонируем репозиторий и переходим в каталог /testnet-validator
85 |
86 | ```bash
87 | git clone https://gitlab.com/q-dev/testnet-public-tools
88 | cd testnet-public-tools/testnet-validator
89 | ```
90 |
91 | Далее, создаем текстовый файл pwd.txt с паролем который находится в каталоге `testnet-public-tools/testnet-validator/keystore/`
92 |
93 | ```bash
94 | cd $HOME/testnet-public-tools/testnet-validator/
95 | mkdir keystore
96 | cd keystore
97 | nano pwd.txt
98 | # придумываем пароль и вписываем, не забудьте его сохранить (без кавычек)
99 | # далее закрываем nano
100 | Ctrl+o enter Ctrl+x
101 | ```
102 |
103 | ## Generate a Keypair for Validator
104 | Создается `.json` файл кошелька который находится в каталоге `/root/testnet-public-tools/testnet-validator/keystore/` - даный ключ экспортируем в `Metamask` , так же данный кошелек нужно указать в форме. Пароль от этого кошелька записан в `pwd.txt`.
105 |
106 |
107 |
108 | ```bash
109 | cd $HOME/testnet-public-tools/testnet-validator/
110 | docker-compose run --rm --entrypoint "geth account new --datadir=/data --password=/data/keystore/pwd.txt" testnet-validator-node
111 |
112 | # вывод:
113 |
114 | # Your new key was generated
115 |
116 | # Public address of the key: 0xb3FF24F818b0ff6Cc50de951bcB8f86b52287dac
117 | # Path of the secret key file: /data/keystore/UTC--2021-01-18T11-36-28.705754426Z--b3ff24f818b0ff6cc50de951bcb8f86b52287dac
118 |
119 | # - You can share your public address with anyone. Others need it to interact with you.
120 | # - You must NEVER share the secret key with anyone! The key controls access to your funds!
121 | # - You must BACKUP your key file! Without the key, it's impossible to access account funds!
122 | # - You must REMEMBER your password! Without the password, it's impossible to decrypt the key!
123 | ```
124 |
125 |
126 | > 💡 Не забываем сохранять пароли и Ключи (UTC--…)
127 |
128 |
129 | Нужно 2 кошелька эфириум - для ревардов и тестовый, для удобства добавляем в основной кошелек Метамаск наш тестовый сгененрированный кошелек.
130 |
131 | Для этого:
132 | - в `Metamask` `Импортировать счет` Выбрать тип `Файл JSON`
133 |
134 | - Выбираем ключ из каталога `../keystore` (пример: `UTC--2021-01-18T11-36-28.705754426Z--b3ff24f818b0ff6cc50de951bcb8f86b52287dac`)
135 |
136 | - Вводим пароль (`pwd.txt`)
137 |
138 | - Ждем минут 10
139 |
140 | ## Создаем валидатора
141 | Переходим на сайт [`https://hq.qtestnet.org/`](https://hq.qtestnet.org/), коннектим тестовый кошелек`Connect to Q Testnet`
142 |
143 | Включаем `Advanced mode`, переходим в `Validator Staiking`, вводим количество `Amount` и стейкаем `Stake to Ranking`, после чего присоединяемся `Join Validator Ranking`
144 |
145 | Монеты получаем из крана - [Faucet](https://faucet.qtestnet.org/)
146 |
147 | 
148 |
149 | ## Configure Setup
150 |
151 | Редактируем файл `.env`
152 |
153 | ```bash
154 | cd $HOME/testnet-public-tools/testnet-validator/
155 | nano .env
156 |
157 | # сохранить и закрыть nano Ctrl+o enter Ctrl+x
158 | ```
159 |
160 | в строчку `ADDRESS=`вставляем ваш адрес без 0x
161 |
162 | в строчку `IP=` вставляем ваш ip
163 |
164 | 
165 |
166 | Редактируем файл `config.json`
167 |
168 | ```bash
169 | cd $HOME/testnet-public-tools/testnet-validator/
170 | nano config.json
171 |
172 | # сохранить и закрыть nano Ctrl+o enter Ctrl+x
173 | ```
174 |
175 | в строчку `"address":` в кавычки вставляем ваш адрес без 0x
176 | в строчку `"password":` в кавычки вставляем ваш пароль который вписывали в `pwd.txt`
177 |
178 | ## Регистрируем валидатора
179 |
180 | Заполняем форму - [https://itn.qdev.li/](https://itn.qdev.li/)
181 |
182 | Записываем Имя валидатора - его нужно будет вставить в `docker-compose.yaml`
183 |
184 | 
185 |
186 | Редактируем файл `docker-compose.yaml`
187 |
188 | ```bash
189 | cd $HOME/testnet-public-tools/testnet-validator/
190 | nano docker-compose.yaml
191 | ```
192 |
193 | Удаляем всё (удалить строчку целиком `Ctrl+k` ). Вставляем как ниже и изменяем Имя валидатора на свое в строке `"--ethstats=`
194 |
195 | ```bash
196 | version: "3"
197 |
198 | services:
199 | testnet-validator-node:
200 | image: $QCLIENT_IMAGE
201 | entrypoint: [
202 | "geth",
203 | "--testnet",
204 | "--datadir=/data",
205 | "--syncmode=full",
206 | "--ethstats=<ИМЯ_ВАЛИДАТОРА>:qstats-testnet@stats.qtestnet.org",
207 | "--whitelist=3699041=0xabbe19ba455511260381aaa7aa606b2fec2de762b9591433bbb379894aba55c1",
208 | "--bootnodes=$BOOTNODE1_ADDR,$BOOTNODE2_ADDR,$BOOTNODE3_ADDR",
209 | "--verbosity=3",
210 | "--nat=extip:$IP",
211 | "--port=$EXT_PORT",
212 | "--unlock=$ADDRESS",
213 | "--password=/data/keystore/pwd.txt",
214 | "--mine",
215 | "--miner.threads=1",
216 | "--miner.gasprice=1",
217 | "--rpc.allow-unprotected-txs"
218 | ]
219 | volumes:
220 | - ./keystore:/data/keystore
221 | - ./additional:/data/additional
222 | - testnet-validator-node-data:/data
223 | ports:
224 | - $EXT_PORT:$EXT_PORT
225 | - $EXT_PORT:$EXT_PORT/udp
226 | restart: unless-stopped
227 |
228 | volumes:
229 | testnet-validator-node-data:
230 |
231 | # сохранить и закрыть nano Ctrl+o enter Ctrl+x
232 | ```
233 |
234 | ## Запускаем ноду
235 |
236 | ```bash
237 | cd $HOME/testnet-public-tools/testnet-validator/
238 | docker-compose up -d
239 | ```
240 |
241 | Посмотреть логи
242 |
243 | ```bash
244 | docker-compose logs -f --tail "100"
245 | ```
246 |
247 | ## Обязательное обновление - выполнить сразу после запуска ноды
248 |
249 | На блоке **3,699,041** сеть перестает синхронизироваться, поэтому чтобы его “проскочить” в консоли необходимо ввести команду ниже и перезагрузить ноду со сбросом базы
250 |
251 | ```bash
252 | cd $HOME/testnet-public-tools/testnet-validator/
253 |
254 | # переходим в консоль
255 | docker-compose exec testnet-validator-node geth attach /data/geth.ipc
256 |
257 | # вводим команду
258 | debug.setHead(web3.toHex(3699040))
259 |
260 | # закрыть консоль: ctrl+d или exit
261 |
262 | # перезагружаем ноду
263 | docker-compose down -v && docker-compose up -d
264 | ```
265 |
266 | ## Special thanks
267 |
268 | [@nil1oki](https://github.com/nil1oki) - creating,
269 | [@roadd](https://github.com/ryssroad) -formatting
270 |
--------------------------------------------------------------------------------