Bước 3: Run midnight node Validator
Điều kiện cần
Cổng Postgres phải truy cập được đối với midnight-node và cardano-db-sync phải được đồng bộ hoàn toàn (Bước 1).
Hiện tại, midnight-node có sẵn dưới dạng Docker image. Do đó, cần có Docker/Docker Compose.
Thư mục data/chains/partner_chains_template/… (được tạo ở Bước 2).
Cài đặt direnv để quản lý các biến môi trường, Thiết lập các biến trong .envrc.
I. Cấu hình file .envrc để chạy ở chế độ Validator
Trong thư mục midnight-node-docker tiến hành chỉnh sửa file .envrc
nano .envrc
tìm đến dòng export APPEND_ARGS thêm cờ –validator
export APPEND_ARGS="--allow-private-ip --validator --pool-limit 10 --trie-cache-size 0 --prometheus-external --unsafe-rpc-external --rpc-cors all"
II. docker-compose up midnight-node và sao chép key cho midnight-node
rong cùng thư mục với compose.yml, chỉ cần chạy docker compose up để khởi động node.
docker compose up -d
Node sẽ bắt đầu đồng bộ với testnet.
⚙️ Syncing 2.6 bps, target=#474962 (8 peers), best: #3967 (0xf620…d752), finalized #3584 (0x56d5…f7bd), ⬇ 0.8kiB/s ⬆ 0.2kiB/s
#Trong ví dụ log trên; node đang đồng bộ và kết nối ngang hàng p2p là (8). Block được đồng bộ hiện tại là 3967, nhưng mục tiêu đồng bộ là 474962.
Sau khi node đã khởi động, Trong cùng thư mục với compose.yml tiến hành chạy lệnh bên dưới để vào trong docker container midnight
./midnight-shell
Tiến hành sao chéo key vào thư mục node
cp /data/chains/partner_chains_template/keystore/* /node/chain/chains/testnet-02/keystore/
cp /data/chains/partner_chains_template/network/* /node/chain/chains/testnet-02/network/
Sau khi đã sao chép khóa thành công ta khởi động lại node
docker compose restart
Lưu ý: Node của bạn sẽ đủ điều kiện để tạo Block sau n + 2 epoch kể từ khi đăng ký. Ví dụ, nếu bạn đăng ký ở epoch 900 và bắt đầu một validator node ở epoch 901, thì bạn sẽ thấy Block được tạo ở epoch 902.
Node của bạn sẽ mất khoảng vài giờ để đồng bộ 100%. Khi nút được đồng bộ hóa hoàn toàn, thì bạn sẽ tham gia vào quá trình sản xuất khối. Ví dụ:

Prepared block for proposing: Dòng này chỉ ra rằng node của bạn đã chuẩn bị một block để đề xuất ở một block cụ thể (ví dụ: #290398).
Pre-sealed block for proposal: Điều này cho thấy block đã sẵn sàng được đề xuất cho mạng, bao gồm cả hash của nó.
Imported: Điều này có nghĩa là block mà node của bạn tạo đã được import vào blockchain. Nếu hash khớp với block đã đề xuất của bạn, đó là dấu hiệu rõ ràng cho thấy block của node bạn đã được chấp nhận.