Hướng dẫn chi tiết cách cài đặt, cấu hình và vận hành Cardano Node từ cơ bản để hỗ trợ các hoạt động Layer-2 của Hydra. Tài liệu bao gồm thiết lập môi trường, cài đặt các phụ thuộc, đồng bộ node và các thực tiễn tốt nhất, giúp bạn xây dựng nền tảng ổn định, an toàn và hiệu quả cho các ứng dụng Hydra.
Trong phần này, chúng ta sẽ thực hiện cài đặt và cấu hình một node của Cardano trên môi trường Ubuntu. Đây là bước nền tảng và bắt buộc nếu bạn muốn làm việc sâu hơn với hệ sinh thái Cardano, đặc biệt là các giải pháp mở rộng Layer-2 như Hydra.
Thay vì đồng bộ blockchain theo cách truyền thống mất nhiều giờ hoặc thậm chí nhiều ngày, chúng ta sẽ sử dụng Mithril để rút ngắn thời gian sync xuống chỉ còn khoảng 15 phút. Điều này giúp bạn nhanh chóng có một node hoạt động đầy đủ để phục vụ cho việc phát triển và thử nghiệm.
Ngoài ra, bạn cũng sẽ học cách duy trì node hoạt động liên tục 24/7, thực hiện các giao dịch cơ bản, và chuẩn bị môi trường sẵn sàng để triển khai Hydra Head trong các phần tiếp theo.
Sau khi hoàn thành phần này, bạn sẽ có thể:
- Cài đặt và cấu hình thành công Cardano Node trên Ubuntu bằng binary.
- Đồng bộ node nhanh chóng bằng Mithril thay vì sync truyền thống.
- Hiểu được cách node hoạt động và vai trò của nó trong mạng Cardano.
- Vận hành node ổn định 24/7 bằng các công cụ như tmux hoặc systemd.
- Thực hiện được một giao dịch cơ bản trên mạng Preview thông qua node đã cài đặt.
- Chuẩn bị đầy đủ môi trường để triển khai Hydra Head trong các bài học tiếp theo.
Hydra hoạt động như một Layer 2 xác định (deterministic L2) và không thể vận hành nếu không có Cardano Node.
Bảng dưới đây tóm tắt 3 chức năng phụ thuộc cốt lõi:
| Chức năng | Mô tả | Cardano Node cung cấp gì? |
|---|
| Commit tài sản vào Hydra Head | Hồ sơ tài sản (ADA/token) được gửi từ Layer 1 để mở Hydra Head. | Ký & gửi giao dịch commit, xác minh input/output trên L1. |
| Xử lý snapshot & giao dịch off-chain | Snapshot của L2 được neo vào L1; các giao dịch off-chain cần tham chiếu trạng thái on-chain. | Chain tip mới nhất, protocol parameters, thời gian/slot. |
| Đồng bộ tuyệt đối với Layer 1 | Hydra Head phải nhất quán 100% với L1 để đảm bảo tính xác định và khả năng đóng Head. | Trạng thái L1 liên tục; node phải ổn định, không trễ sync. |
Nếu Cardano Node chậm, lỗi hoặc mất kết nối → Hydra tạm dừng hoặc ngừng hoạt động → Đây là lý do việc vận hành node ổn định và cấu hình đúng chuẩn là điều kiện tiên quyết để chạy Hydra.
| Mục tiêu | Chi tiết |
|---|
| Cài đặt Cardano Node 10.5.1 (binary) | Cài đặt bản chính thức, không cần biên dịch, chỉ 5 phút. |
| Đồng bộ Preview/Preprod/Mainnet | Dùng snapshot (Nhỏ hơn1 giờ) hoặc Mithril (15 phút). |
| Chạy node 24/7 với systemd | Tự khởi động lại khi lỗi, auto-start khi reboot. |
| Sẵn sàng cho Hydra | Cấu hình socket, key, firewall, Docker và chuẩn bị môi trường L2. |
- Phiên bản Hydra 1.0.0 đã hỗ trợ mainnet với ADA thật.
- Khuyến nghị sử dụng Preview để thử nghiệm trước khi triển khai production.
Tài liệu này phù hợp cho các nhóm dưới đây, tùy theo mục đích triển khai Cardano Node hoặc Hydra:
| Đối tượng | Mục đích / Nhu cầu |
|---|
| Developer dApp Hydra | Xây dựng ứng dụng Layer 2: tipping, gaming real-time, microtransaction, DeFi; cần môi trường L1 để commit ADA và thử nghiệm Hydra Head. |
| Node Operator | Triển khai node riêng nhằm đảm bảo tự chủ dữ liệu, nâng cao bảo mật, đồng bộ 24/7 và sử dụng CLI cho các tác vụ on-chain. |
| Dự án Production | Vận hành hệ thống yêu cầu môi trường Cardano L1 ổn định, hiệu năng cao và tích hợp Hydra hoặc backend on-chain trong quy mô lớn. |
Bảng dưới đây thể hiện cấu hình khuyến nghị cho từng mạng, bảo đảm Cardano Node hoạt động ổn định và đủ tài nguyên cho Hydra hoặc môi trường production.
| Thành phần | Mainnet (Production) | Preprod (Staging) | Preview (Development) |
|---|
| Hệ điều hành | Ubuntu 22.04 LTS | Ubuntu 22.04 LTS | Ubuntu 22.04 LTS |
| CPU | 8 cores @ 3.0GHz+ | 6 cores @ 2.8GHz+ | 4 cores @ 2.5GHz+ |
| RAM | 24 GB | 20 GB | 16 GB |
| Ổ cứng | 250 GB NVMe | 150 GB SSD | 100 GB SSD |
| Mạng | 1 Gbps | 500 Mbps | 100 Mbps |
| ADA yêu cầu | 10–50 ADA | 5–20 tADA | 1–5 tADA |
| Mạng | Kích thước DB | Thời gian sync (snapshot) |
|---|
| Mainnet | ~90 GB | ~50 phút |
| Preprod | ~50 GB | ~30 phút |
| Preview | ~35 GB | ~20 phút |
Ghi chú:
- Sử dụng NVMe cho Mainnet giúp tăng tốc độ I/O đáng kể, cải thiện performance của ChainDB.
- Mạng Preview/Preprod có thể dùng SSD nhưng ưu tiên NVMe nếu chạy Hydra hoặc backend nhiều truy vấn.
- ADA yêu cầu dùng cho phí giao dịch commit/close Hydra Head hoặc thao tác CLI cơ bản.
Trước khi cài đặt Cardano Node, bạn cần chuẩn bị môi trường hệ thống đầy đủ và ổn định.
Phần này gồm ba bước chính: cập nhật hệ điều hành, cài đặt công cụ hỗ trợ và kiểm tra phiên bản các công cụ.
Cập nhật danh sách gói và nâng cấp toàn bộ package giúp hệ thống ổn định và tránh lỗi phụ thuộc khi cài đặt Node.
sudo apt update && sudo apt upgrade -y
- Đảm bảo môi trường Ubuntu tương thích với các binary mới.
- Giảm rủi ro lỗi trong quá trình chạy Cardano Node lâu dài.
- Vá lỗi bảo mật và cập nhật thư viện hệ thống.
Các công cụ này được sử dụng xuyên suốt trong việc tải file, giải nén, xử lý cấu hình và thao tác JSON.
sudo apt install curl wget tar unzip jq git -y
| Công cụ | Chức năng |
|---|
| curl | Tải file và thực hiện API request từ URL. |
| wget | Tải file lớn như snapshot hoặc config mạng. |
| tar | Giải nén các file .tar.gz của Cardano Node. |
| unzip | Giải nén file .zip khi tải cấu hình hoặc tools. |
| jq | Đọc và xử lý JSON – rất quan trọng khi dùng cardano-cli. |
| git | Tải source hoặc file cấu hình từ GitHub khi cần. |
Kiểm tra để xác nhận các tiện ích đã được cài đặt thành công và hoạt động đúng.
unzip --version
curl --version
tar --version
jq --version
- Đảm bảo các công cụ đã có trong PATH.
- Tránh lỗi khi chạy các lệnh tải và giải nén.
- Xác nhận phiên bản đủ mới để hoạt động ổn định.
Để tiết kiệm thời gian và giảm độ phức tạp, phần này hướng dẫn bạn cài đặt phiên bản chính thức 10.5.1 của cardano-node và cardano-cli bằng binary được IntersectMBO ký số.
Phương pháp này không yêu cầu biên dịch từ source, giúp rút ngắn thời gian cài đặt từ 30–60 phút xuống còn vài phút.
- ✅ Không cần biên dịch – thiết lập nhanh chóng
- ✅ Hiệu năng cao và ổn định
- ✅ Đảm bảo an toàn (checksum + chữ ký)
- ✅ Dễ dàng nâng cấp khi có phiên bản mới
Phiên bản chính thức (30/10/2025):
cardano-node-10.5.1-linux.tar.gz
Nguồn: GitHub Releases → IntersectMBO
SHA256 có trong cùng trang phát hành.
Thiết lập biến phiên bản để dễ quản lý và nâng cấp sau này.
Tải file tarball đã được ký số từ nguồn chính thức của IntersectMBO.
curl -L -o cardano-node-${CARDANO_VERSION}-linux.tar.gz \
https://github.com/IntersectMBO/cardano-node/releases/download/${CARDANO_VERSION}/cardano-node-${CARDANO_VERSION}-linux.tar.gz
Giải nén đúng các thư mục cần thiết: cardano-node, cardano-cli và cấu hình mạng preview.
tar xf cardano-node-${CARDANO_VERSION}-linux.tar.gz ./bin/cardano-node ./bin/cardano-cli
tar xf cardano-node-${CARDANO_VERSION}-linux.tar.gz ./share/preview --strip-components=3
Thêm ~/bin vào PATH để có thể gọi cardano-node và cardano-cli ở bất kỳ đâu.
export PATH="$HOME/bin:$PATH"
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Xác nhận rằng Node và CLI đã được cài đặt đúng phiên bản.
cardano-node --version
cardano-cli --version
Kết quả:
cardano-node 10.5.1 - linux-x86_64 - ghc-9.6
git rev ca1ec278070baf4481564a6ba7b4a5b9e3d9f366
cardano-cli 10.11.0.0 - linux-x86_64 - ghc-9.6
git rev ca1ec278070baf4481564a6ba7b4a5b9e3d9f366
Để đưa Cardano Node vào trạng thái hoạt động, bạn cần đồng bộ dữ liệu blockchain.
Có hai phương thức phổ biến: dùng snapshot truyền thống hoặc dùng Mithril (khuyến nghị) – giải pháp đồng bộ nhanh thế hệ mới.
Bảng dưới đây giúp bạn chọn phương án phù hợp theo nhu cầu và môi trường triển khai.
| Tiêu chí | Chạy thường (Snapshot) | Mithril (Khuyến nghị) |
|---|
| Thời gian sync | ~ 50 phút (Mainnet) | ~ 15 phút |
| Dung lượng tải | ~ 90 GB | ~ 2.5 GB |
| Kiểm tra tính toàn vẹn | SHA256 checksum | Chứng thực đa chữ ký (multi-signature) |
| Tính tương lai | Công nghệ cũ | Giải pháp sync thế hệ mới của Cardano |
| Độ phức tạp | Đơn giản | Đơn giản (tự động hóa) |
| Khuyến nghị | ❌ Không khuyến khích | ✅ Nên dùng |
Nhận xét:
- Snapshot truyền thống vẫn hoạt động tốt nhưng tốn dung lượng tải lớn và tốc độ sync chậm.
- Mithril giúp giảm kích thước tải xuống hơn 35 lần và có cơ chế bảo mật mạnh hơn thông qua multi-signature, vì vậy được xem là tương lai của quá trình đồng bộ Cardano Node.
- Trong hầu hết trường hợp — nên dùng Mithril.
Phương pháp này sử dụng snapshot truyền thống được cung cấp kèm theo bộ cài đặt để khởi tạo nhanh thư mục dữ liệu (db).
Sau khi giải nén snapshot, node sẽ tự đồng bộ phần còn lại với mạng lưới.
tar xf cardano-node-${CARDANO_VERSION}-linux.tar.gz ./share/preview --strip-components=3
Snapshot được giải nén vào thư mục db, giúp node rút ngắn thời gian sync ban đầu.
cardano-node run \
--config config.json \
--topology topology.json \
--socket-path ./node.socket \
--database-path db
Node sẽ bắt đầu đọc dữ liệu từ snapshot, xác minh tính toàn vẹn, sau đó đồng bộ phần còn lại từ các peer trong mạng.
[c995d1df:cardano.node.ChainDB:Notice:322] [2022-07-10 13:53:40.06 UTC] Chain extended, new tip: 7ae33b2f4bc8b84e77dfd539f0f6e7f59b293e96f62fdcfdb17cbd7a006fe5c0 at slot 63081906
[c995d1df:cardano.node.ChainDB:Notice:322] [2022-07-10 13:55:08.30 UTC] Chain extended, new tip: 6b4ccd2bec5e3862b23ea0f7c2f342a3659cecdcfdaf04551179df3839be6213 at slot 63092090
[c995d1df:cardano.node.ChainDB:Notice:322] [2022-07-10 13:55:21.36 UTC] Chain extended, new tip: 6e95eb82da5a38544e6ef430a2733f6014c3c10527003b9d3bdc534f6a2ce81f at slot 63092103
[c995d1df:cardano.node.ChainDB:Notice:322] [2022-07-10 13:55:39.04 UTC] Chain extended, new tip: a662672ec4b988022e135cb0b7e440f5fbffe8e205771d13a566a418f7021ba7 at slot 63092121
[c995d1df:cardano.node.ChainDB:Notice:322] [2022-07-10 13:55:45.18 UTC] Chain extended, new tip: 2a0f2e6f218a08f4e0bc4668285d8e792fd7ec62f05880bd5b2d23d6bce20dfb at slot 63092127
[c995d1df:cardano.node.ChainDB:Notice:322] [2022-07-10 13:56:18.05 UTC] Chain extended, new tip: ab9ef8af92ec062ec59a10da588e238ba8840705c095ebd5cd5da7ab9ea9c8e1 at slot 63092160
cardano-cli query tip --testnet-magic 2
Khi đồng bộ hoàn tất, bạn sẽ thấy kết quả như sau:
{
"block": 3734105,
"epoch": 1101,
"era": "Conway",
"hash": "c1fd0fe85db337c3044acf06db90be929aebced51880ee7bba9e97f72a6d4972",
"slot": 95160249,
"slotInEpoch": 33849,
"slotsToEpochEnd": 52551,
"syncProgress": "100.00"
}
Chỉ số syncProgress = "100.00" xác nhận node đã đồng bộ hoàn toàn.
Mithril là giải pháp đồng bộ thế hệ mới của Cardano, cho phép tải xuống snapshot đã được chứng thực bởi multi-signature, giúp việc sync node nhanh hơn 3–5 lần và an toàn hơn nhiều so với snapshot truyền thống.
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/input-output-hk/mithril/refs/heads/main/mithril-install.sh | sh -s -- -c mithril-client -d latest -p bin
Cấu hình PATH:
export PATH="$HOME/bin:$PATH"
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Kiểm tra phiên bản:
Ví dụ kết quả:
mithril-client 0.12.30+6a7107e
# Cardano network
export CARDANO_NETWORK=preview
# Aggregator API endpoint URL
export AGGREGATOR_ENDPOINT="https://aggregator.testing-preview.api.mithril.network/aggregator"
# Genesis verification key
export GENESIS_VERIFICATION_KEY=$(wget -q -O - https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/genesis.vkey)
# Ancillary verification key
export ANCILLARY_VERIFICATION_KEY=$(wget -q -O - https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/ancillary.vkey)
# Latest snapshot digest
export SNAPSHOT_DIGEST=latest
# Cardano network ID
export CARDANO_NODE_NETWORK_ID=2
export CARDANO_NODE_SOCKET_PATH="./node.socket"
export PATH="$(pwd)/bin:$PATH"
mithril-client cardano-db snapshot list
Ví dụ kết quả:
+-------+-----------+---------+----------------------------+--------+-----------+
|Epoch |Immutable |Network |Digest (short) | Size | Created |
+-------+-----------+---------+----------------------------+--------+-----------+
|916 |18323 |preview |a1b5e6f4...82a0d1974 |3.14GB |04-28 08:40|
|916 |18322 |preview |1d5172a4...f17ae21d |3.13GB |04-28 07:22|
|916 |18321 |preview |9cd51315...1fcb6d1 |3.13GB |04-28 06:26|
|916 |18320 |preview |550bc248...e8eb05f |3.13GB |04-28 05:18|
+-------+-----------+---------+----------------------------+--------+-----------+
mithril-client cardano-db snapshot show $SNAPSHOT_DIGEST
Ví dụ:
+----------------------+---------------------------------------------------------------------------------------+
| Epoch | 916 |
| Immutable File Num. | 18323 |
| Network | preview |
| Digest | a1b5e6f4...a0d1974 |
| Size | 3.14 GiB |
| Node Version | 10.5.1 |
| Location | https://storage.googleapis.com/.../preview-e916-i18323.a1b5e6f4...a0d1974.tar.zst |
| Created | 2025-04-28 08:40:34 UTC |
| Compression | Zstandard |
+----------------------+---------------------------------------------------------------------------------------+
mithril-client cardano-db download --include-ancillary $SNAPSHOT_DIGEST
Ví dụ output:
Cardano db 'a1b5e6f43521fd9c5f55e3d6bf27dc4a62f43980681cb67e28cc40582a0d1974' has been unpacked and successfully verified with Mithril.
Files in the directory 'db' can be used to run a Cardano node with version >= 10.5.1.
cardano-node run \
--config config.json \
--topology topology.json \
--socket-path ./node.socket \
--database-path db
Ví dụ log:
[c995d1df:cardano.node.ChainDB:Notice:322] Chain extended, new tip: 7ae33b2f4bc...
[c995d1df:cardano.node.ChainDB:Notice:322] Chain extended, new tip: 6b4ccd2bec5...
cardano-cli query tip --testnet-magic 2
Khi sync hoàn tất:
{
"block": 3734105,
"epoch": 1101,
"era": "Conway",
"hash": "c1fd0fe85db337c3044acf06db90be929aebced51880ee7bba9e97f72a6d4972",
"slot": 95160249,
"slotInEpoch": 33849,
"slotsToEpochEnd": 52551,
"syncProgress": "100.00"
}
Sau khi Cardano Node đã chạy và CLI hoạt động bình thường, bạn có thể thử thực hiện một giao dịch đơn giản để đảm bảo mọi thành phần của hệ thống đã sẵn sàng.
Tạo cặp khóa (verification key & signing key)
cardano-cli address key-gen --verification-key-file payment.vkey --signing-key-file payment.skey --testnet-magic 2
Sinh địa chỉ:
cardano-cli address build --payment-verification-key-file payment.vkey --out-file payment.addr --testnet-magic 2
Kiểm tra địa chỉ:
Preview Faucet: https://docs.cardano.org/cardano-testnet/tools/faucet
Sau khi nạp, kiểm tra UTxO:
cardano-cli query utxo --address $(cat payment.addr) --testnet-magic 2
kết quả:
TxHash TxIx Amount
--------------------------------------------------------------------------------------
be3fa4c...c01b 0 100000000 lovelace
TX_HASH="be3fa4c...c01b"
TX_IX="0"
LOVELACE_IN="100000000"
PAYMENT_ADDR=$(cat payment.addr)
RECEIVER_ADDR="addr_test1vq...."
FEE="200000"
LOVELACE_OUT=$((LOVELACE_IN - FEE))
cardano-cli transaction build --babbage-era --testnet-magic 2 --tx-in $TX_HASH#$TX_IX --tx-out "$RECEIVER_ADDR+$LOVELACE_OUT" --change-address $PAYMENT_ADDR --out-file tx.raw
cardano-cli transaction sign --tx-body-file tx.raw --signing-key-file payment.skey --testnet-magic 2 --out-file tx.signed
cardano-cli transaction submit --tx-file tx.signed --testnet-magic 2
cardano-cli query utxo --address $RECEIVER_ADDR --testnet-magic 2