Chạy một node Cardano là cách trực tiếp nhất để tham gia vào sự đồng thuận của mạng, xác nhận giao dịch và đóng góp cho sự phân quyền làm cho Cardano an toàn. Bất kể bạn là một nhà phát triển xây dựng dApps, một nhà điều hành kho chứa cổ phần, hoặc một người hâm mộ muốn kiểm soát hoàn toàn các tương tác với ADA, việc học cách chạy một node Cardano cho bạn sự độc lập từ các API của bên thứ ba và quyền truy cập trực tiếp vào trạng thái chuỗi khối.
Cuốn hướng dẫn này bao gồm tất cả các nội dung từ yêu cầu phần cứng và cài đặt phần mềm đến cấu hình, đồng bộ hóa và bảo trì liên tục. Đến cuối bài học, bạn sẽ có một node Cardano hoạt động đầy đủ trên mainnet hoặc testnet.
Tại sao nên chạy node Cardano của riêng bạn?
Trước khi đi sâu vào cấu hình kỹ thuật, bạn nên hiểu được những lợi ích bạn nhận được khi vận hành node của riêng mình:
Xác minh không cần tin tưởng — Bạn tự xác minh từng khối và giao dịch thay vì dựa vào một trình duyệt khối hoặc nhà cung cấp ví. Đây là nền tảng của "không tin tưởng, xác minh".
Gửi giao dịch trực tiếp — Gửi giao dịch trực tiếp vào mempool mà không cần thông qua API của bên thứ ba. Độ trễ thấp, không có giới hạn tốc độ, không cần khóa API.
Lịch sử blockchain đầy đủ — Tìm kiếm bất kỳ khối, giao dịch hoặc UTxO nào vào bất kỳ thời điểm nào. Đáng kể cho việc phát triển dApp, phân tích và kiểm toán.
Kinh doanh kho chứa cổ phần - Nếu bạn có kế hoạch chạy kho chứa cổ phần, bạn cần ít nhất hai nút (người sản xuất khối + trung gian). Hướng dẫn này là điểm khởi đầu của bạn.
Công trình bảo vệ sức khỏe mạng – Mỗi nút đầy đủ bổ sung sẽ tăng cường sự phân quyền và khả năng chống lại các cuộc tấn công của Cardano.
Yêu cầu phần cứng cho node Cardano
Phần mềm node của Cardano tiêu thụ nhiều tài nguyên, đặc biệt là trong quá trình đồng bộ hóa blockchain ban đầu. Hãy lên kế hoạch cho thiết bị của bạn theo đó.
Thông số tối thiểu (Mainnet)
| Bộ phận | Minimum | Tốt nhất | Ghi chú |
|---|---|---|---|
| CPU | 4 lõi (x86_64) | 8+ lõi | ARM64 (Apple Silicon, Raspberry Pi 4+) được hỗ trợ nhưng đồng bộ hóa chậm hơn |
| RAM | 16 GB | 32 GB | 8 GB hoạt động nhưng có nguy cơ OOM khi đồng bộ; việc thay đổi giúp nhưng làm giảm hiệu suất |
| Cung cấp bộ nhớ | 100 GB SSD | 500 GB+ NVMe | Blockchain tăng ~50 GB/năm; NVMe tăng tốc đồng bộ đáng kể |
| Mạng | 10 Mbps lên/xuống | 100 Mbps+ | Tích hợp kết nối không giới hạn; tải xuống đồng bộ ~100 GB |
| Hệ điều hành | Linux (Ubuntu 22.04+, Debian 12) | Linux | macOS hoạt động; Windows thông qua WSL2 chỉ |
Báo cáo phân tích lưu trữ (Mainnet, tháng 8 năm 2026)
- Bảng dữ liệu chuỗi (DB không thể thay đổi): ~120 GB
Tổng cộng: tối thiểu 200 GB, khuyến nghị 500 GB+ trong 3 năm trở lên.
> ⚠️ Đừng sử dụng HDD. Mẫu I/O ngẫu nhiên trong quá trình đồng bộ hóa và xác minh khối làm cho các ổ đĩa cơ học hoạt động quá chậm. NVMe SSD được khuyến nghị mạnh mẽ.
Yêu cầu trước của phần mềm
Cài đặt hệ điều hành (ví dụ: Ubuntu 22.04 LTS)
bash sudo apt update && sudo apt upgrade -y
sudo apt install -y \ build-essential \ pkg-config \ libgmp-dev \ libssl-dev \ libsystemd-dev \ zlib1g-dev \ libncursesw5-dev \ libtinfo5 \ git \ jq \ wget \ curl \ tmux \ htopCài đặt GHC và Cabal (qua GHCup)
Node Cardano yêu cầu các phiên bản GHC cụ thể. Hãy sử dụng GHCup để quản lý phiên bản một cách đáng tin cậy.
bash curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
trình nguồn ~/.ghcup/env ghcup cài đặt ghc 9.6.5 ghcup cài đặt cabal 3.10.3.0 ghc --version # Nên hiển thị 9.6.5> 💡 Định vị phiên bản: Hãy luôn kiểm tra [một số ghi chú phát hành của cardano-node](https://github.com/IntersectMBO/cardano-node/releases) để biết chính xác các phiên bản GHC/Cabal cần thiết. Sử dụng các phiên bản không phù hợp sẽ dẫn đến thất bại trong quá trình xây dựng.
Cấu tạo node Cardano từ nguồn
Tạo từ nguồn đảm bảo bạn có được phiên bản chính xác mà bạn cần và có thể áp dụng các bản sửa lỗi nếu cần thiết.
Clone và xây dựng
bash mkdir -p ~/cardano && cd ~/cardano
git clone https://github.com/IntersectMBO/cardano-node.git git fetch --tags git checkout $(git tag -l "10.*" | sort -V | tail -1) # Thay đổi mẫu phiên bản theo yêu cầu cabal update cabal configure -O2 -w ghc-9.6.5 cabal build tất cả ./dist-newstyle/build/x86_64-linux/ghc-9.6.5/cardano-node-*/x/cardano-node/build/cardano-node/cardano-node --versionLựa chọn khác: Binary đã được xây dựng sẵn (cài đặt nhanh hơn)
Đối với các triển khai sản xuất, các bản sao lưu đã được xây dựng sẵn từ các bản phát hành chính là hoàn toàn phù hợp:
bash cd ~/cardano wget https://github.com/IntersectMBO/cardano-node/releases/download/10.1.1/cardano-node-10.1.1-linux.tar.gz
./cardano-node --versionCấu hình mạng: Mainnet vs Testnet
Cardano có nhiều mạng lưới. Hãy chọn dựa trên trường hợp sử dụng của bạn.
Mainnet (Sản xuất)
- ADA thực tế - Giá trị thực tế, cược thực tế
Testnet Preprod (Tốt nhất cho thử nghiệm)
- Test ADA — Miễn phí từ các vòi nước
Xem trước Testnet (điểm tiên tiến)
- Các tính năng mới nhất - Có thể không ổn định
Tệp cấu hình
Node Cardano sử dụng tệp cấu trúc, tệp cấu hình và tệp khởi tạo. Ba loại này đều phải phù hợp với mạng đích của bạn.
Cấu trúc thư mục
bash mkdir -p ~/cardano-node/{mainnet,preprod}/{config,db,logs,socket}
Tập tin Genesis
Tải các tệp genesis cho mạng của bạn:
bash cd ~/cardano-node/mainnet/config wget https://book.world.mobile/genesis/mainnet/byron-genesis.json wget https://book.world.mobile/genesis/mainnet/shelley-genesis.json wget https://book.world.mobile/genesis/mainnet/alonzo-genesis.json wget https://book.world.mobile/genesis/mainnet/conway-genesis.json
cd ~/cardano-node/preprod/config wget https://book.world.mobile/genesis/preprod/byron-genesis.json wget https://book.world.mobile/genesis/preprod/shelley-genesis.json wget https://book.world.mobile/genesis/preprod/alonzo-genesis.json wget https://book.world.mobile/genesis/preprod/conway-genesis.json> 📍 Các nguồn chính thức của Genesis: Bản sao book.world.mobile được duy trì bởi cộng đồng. Đối với sản xuất, bạn nên sử dụng các nguồn chính thức của IOG hoặc kiểm tra các checksum.
Tệp cấu trúc (topology.json)
Giải thích các đối tác mà nút của bạn kết nối. Đối với một nút trung chuyển:
`json { "Producers": [ { "addr": "relays-new.cardano-mainnet.iohk.io", "port": 3001, "valency": 1 }, { "addr": "relays-new.cardano-mainnet.iohk.io", "port": 3002, "valency": 1 } ] }
Đối với một nhà sản xuất block, bạn có thể cấu hình nó để kết nối chỉ với các nút relay của bạn (không phải là nút relay công khai).
Tệp cấu hình (config.json)
"AlonzoGenesisFile": "alonzo-genesis.json", "ByronGenesisFile": "byron-genesis.json", "ConwayGenesisFile": "conway-genesis.json", "ShelleyGenesisFile": "shelley-genesis.json", "RequiresNetworkMagic": "RequiresMagic", "LastKnownBlockVersion-Major": 10, "LastKnownBlockVersion-Minor": 0, "Protocol": "Cardano", "NodeName": "my-cardano-node", "HasEKG": 12788, "HasPrometheus": [ "127.0.0.1", 9090 ], "minSeverity": "Info", "maxConcurrencyBulkSync": 2, "maxConcurrencyDeadline": 6, "viewMode": "LiveView", "tracerTracer": "default"
Các cài đặt chính được giải thích như sau:
| Cài đặt | Mục đích | Giá trị khuyến nghị |
|---|---|---|
RequiresNetworkMagic | Mã nhận dạng mạng | RequiresMagic (testnet) / RequiresNoMagic (mainnet) |
HasEKG | Cổng theo dõi ECG | 12788 (tắt bằng 0) |
HasPrometheus | KPI của Prometheus | ["127.0.0.1", 9090] |
maxConcurrencyBulkSync | Nhân viên đồng bộ hóa song song | 2 (tăng tốc độ đồng bộ hóa trên thiết bị tốt) |
viewMode | Sự chi tiết của việc ghi log | “LiveView” hoặc “SimpleView” |
Bắt đầu cài đặt node Cardano
Lần chạy đầu tiên: đồng bộ từ Genesis
Khi đồng bộ ban đầu, nó sẽ tải xuống và xác minh toàn bộ blockchain. Điều này sẽ mất 12-48 giờ trên các thiết bị được khuyến nghị.
bash cd ~/cardano-node/mainnet
tmux new-session -s cardano-nodecardano-node run \ --topology config/topology.json \ --config config/config.json \ --database-path db \ --socket-path socket/node.socket \ --port 3001 \ --host-addr 0.0.0.0 \ --log-config config/log-config.json
Điều gì xảy ra trong quá trình đồng bộ hóa:
- Lấy khối — Tải các khối từ các đối tác (bước đồng bộ hóa lớn)
Theo dõi tiến trình đồng bộ
Mở một terminal thứ hai và kiểm tra trạng thái đồng bộ:
bash cardano-cli query tip \ --mainnet \ --socket-path ~/cardano-node/mainnet/socket/node.socket
watch -n 10 'cardano-cli query tip --mainnet --socket-path ~/cardano-node/mainnet/socket/node.socket'Tải về và giải thích: `json { "epoch": 450, "hash": "abc123...", "slot": 45000000, "block": 10245000, "era": "Conway" } `
block= Chiều cao khối hiện tại (so sánh với các trình khám phá như CardanoScan)
Chạy như một dịch vụ Systemd (các môi trường sản xuất)
Đối với sản xuất, chạy node như một dịch vụ systemd để tự động khởi động lại và ghi lại thông tin.
bash sudo tee /etc/systemd/system/cardano-node.service > /dev/null <<'EOF' [Unit] Description=Cardano Node After=network.target
Type=simple User=cardano Group=cardano WorkingDirectory=/home/cardano/cardano-node/mainnet ExecStart=/home/cardano/.local/bin/cardano-node run \ --topology config/topology.json \ --config config/config.json \ --database-path db \ --socket-path socket/node.socket \ --port 3001 \ --host-addr 0.0.0.0 Restart=always RestartSec=10 LimitNOFILE=65535
[Cài đặt] WantedBy=multi-user.target
sudo systemctl daemon-reload sudo systemctl status cardano-nodeXác minh nút của bạn đang hoạt động
Kiểm tra sức khỏe cơ bản
bash cardano-cli query tip --mainnet --socket-path ~/cardano-node/mainnet/socket/node.socket
cardano-cli query protocol-parameters --mainnet --socket-path ~/cardano-node/mainnet/socket/node.socket cardano-cli query epoch --mainnet --socket-path ~/cardano-node/mainnet/socket/node.socket cardano-cli query utxo --address addr1... --mainnet --socket-path ~/cardano-node/mainnet/socket/node.socketKPI Prometheus (nếu được kích hoạt)
`bash curl http://127.0.0.1:9090/metrics | grep cardano
Các chỉ số quan trọng cần theo dõi: - cardano_node_metrics_blockHeight_int — Độ cao khối hiện tại - cardano_node_metrics_peers_connected_int — Peer kết nối (nên là > 0) - cardano_node_metrics_mempool_txs_int — Số giao dịch trong mempool
Các vấn đề thường gặp và khắc phục
Sync bị lỗi hoặc rất chậm
| Triệu chứng | Nguyên nhân | Định vị |
|---|---|---|
| Peer = 0 | Tệp cấu trúc không đúng / tường lửa | Kiểm tra tập tin topology.json, mở cổng 3001 |
| CPU cao, I/O ổ đĩa thấp | Bộn chặn CPU | Tăng maxConcurrencyBulkSync |
| I/O đĩa cao, CPU thấp | Lưu trữ chậm | Sử dụng NVMe; kiểm tra tình trạng ổ đĩa |
| OOM gây chết | RAM không đủ | Thêm swap, tăng RAM, giảm mức đồng thời |
bash cardano-cli query node-state --mainnet --socket-path ~/cardano-node/mainnet/socket/node.socket
journalctl -u cardano-node -f tail -f ~/cardano-node/mainnet/logs/node.logLỗi "Chain DB Corrupted"
bash sudo systemctl stop cardano-node
mv ~/cardano-node/mainnet/db ~/cardano-node/mainnet/db.backup sudo systemctl start cardano-node> ⚠️ Đừng xóa DB khi node đang chạy. Hãy luôn ngừng dịch vụ trước.
Sai lệch phiên bản sau khi nâng cấp
bash cardano-node --version
cardano-cli --version`
Cấu hình nâng cao
Chạy nút Relay (cho các kho bạc Stake)
Một nút relay nằm giữa nhà sản xuất khối của bạn và mạng công cộng. Nó bảo vệ nhà sản xuất khối của bạn khỏi sự tiếp xúc trực tiếp.
Topology relay.json: `json { "Producers": [ { "addr": "relay1.yourdomain.com", "port": 3001, "valency": 1 }, { "addr": "relay2.yourdomain.com", "port": 3001, "valency": 1 }, { "addr": "relays-new.cardano-mainnet.iohk.io", "port": 3001, "valency": 2 } ] } `
Block producer topology.json (đối với các relay chỉ cần kết nối với relay của bạn):
Cấu hình tường lửa
bash sudo ufw allow 3001/tcp comment "Cardano P2P"
sudo ufw allow từ YOUR_MONITORING_IP đến bất kỳ cổng nào 9090 sudo ufw allow ssh sudo ufw enableĐảo chuyển log
Tránh để các log đầy đĩa:
`bash sudo tee /etc/logrotate.d/cardano-node > /dev/null <<'EOF' /home/cardano/cardano-node/mainnet/logs/*.log { daily rotate 14 compress delaycompress missingok notifempty create 640 cardano cardano } EOF
Kiểm tra và nâng cấp
Các nhiệm vụ bảo trì thường xuyên
| Nhiệm vụ | Tần số | Hướng dẫn |
|---|---|---|
| Kiểm tra trạng thái đồng bộ | Mỗi ngày | cardano-cli query tip |
| Theo dõi sử dụng đĩa | Tuần một | df -h ~/cardano-node/mainnet/db |
| Kiểm tra số peer | Mỗi ngày | cardano-cli query node-state |
| Xem các bản ghi để tìm lỗi | Tuần một | journalctl -u cardano-node --since "1 tuần trước" |
| Cập nhật đối tác cấu trúc | Tháng | Sửa đổi topology.json, khởi động lại node |
Cập nhật Node Cardano
bash sudo systemctl stop cardano-node
cp ./new-cardano-node /home/cardano/.local/bin/cardano-node sudo systemctl start cardano-node cardano-node --version cardano-cli query tip --mainnet --socket-path ~/cardano-node/mainnet/socket/node.socket> 🔄 Chiến lược nâng cấp: Đầu tiên, thử nghiệm trên testnet. Các nâng cấp trên mainnet nên được phối hợp với cộng đồng (xem Discord/forum để biết thời gian nâng cấp).
Các phương pháp tốt nhất về bảo mật
An ninh mạng
- Điều hành như người dùng không phải là root — Tạo một người dùng
cardanoriêng biệt
An ninh hoạt động
- Không có khóa trên các nút relay — Khóa của nhà sản xuất khối vẫn được lưu trữ trên máy không kết nối mạng/offline
Tùy chỉnh hiệu suất
Để đồng bộ nhanh hơn
json { "maxConcurrencyBulkSync": 4, "maxConcurrencyDeadline": 12, "blockFetchBatchSize": 100 }
Để sử dụng tài nguyên ít hơn (sau khi đồng bộ)
json { "maxConcurrencyBulkSync": 1, "maxConcurrencyDeadline": 2, "viewMode": "SimpleView" }
Tùy chỉnh cơ sở dữ liệu (PostgreSQL không được sử dụng – Node sử dụng cơ sở dữ liệu không thay đổi)
Bảng dữ liệu nội bộ của nút được tối ưu hóa cho các công việc có tải trọng lớn. Không cần thiết phải điều chỉnh thủ công ngoài việc đảm bảo đủ bộ nhớ RAM và bộ lưu trữ NVMe.
FAQ: Cài đặt node Cardano
Câu hỏi: Tôi có thể chạy node Cardano trên Raspberry Pi không?
A: Có, trên Raspberry Pi 4 (8 GB RAM) hoặc Pi 5 với NVMe HAT. Sync mất 5-7 ngày. Sử dụng hệ điều hành 64-bit (Ubuntu Server 22.04 ARM64). Không khuyến nghị sử dụng cho relay kho lưu trữ do độ trễ mạng.
Câu hỏi: Node sử dụng bao nhiêu băng thông?
A: Sync ban đầu: ~100 GB tải xuống. Đơn hàng: ~50-200 GB/tháng tùy thuộc vào số lượng người đồng hành và hoạt động của mempool. Tích hợp kết nối không giới hạn được khuyến nghị mạnh mẽ.
Câu hỏi: Tôi có cần đặt cọc ADA để chạy một node không?
A: Không. Để chạy một node (người trung chuyển hoặc nhà sản xuất khối) không cần ADA. Chỉ cần đăng ký một nhóm đặt cọc thì cần khoản tiền gửi 500 ADA + cam kết.
Q: Tôi có thể chạy nhiều node trên một máy không?
A: Có, với các cổng, đường dẫn cơ sở dữ liệu và đường dẫn kết nối khác nhau. Thông thường để chạy mainnet + testnet cùng lúc, hoặc relay + block producer (mặc dù các máy riêng biệt được ưu tiên cho các pool).
Câu hỏi: Sự khác biệt giữa node đầy đủ và ví điện tử thông thường là gì?
A: Một điểm cuối đầy đủ (các hướng dẫn này) tải xuống và xác minh toàn bộ blockchain. Một cá nhân tiền điện tử nhẹ (như Yoroi, Eternl, Lace) tin tưởng vào một máy chủ xa để lấy dữ liệu blockchain. Điểm cuối đầy đủ cung cấp xác minh không cần tin tưởng; cá nhân tiền điện tử nhẹ cung cấp sự tiện lợi.
Câu hỏi: Làm thế nào để tôi biết nút của tôi nằm trong chuỗi đúng?
A: So sánh hash cuối cùng của nút và độ cao khối với nhiều trình khám phá khối (CardanoScan, CExplorer, PoolTool). Chúng nên trùng khớp hoàn toàn.
Câu hỏi: Điều gì xảy ra trong quá trình hard fork?
A: Knoten của bạn sẽ tự động theo dõi chuỗi có công việc tích lũy nhiều nhất, miễn là bạn đã nâng cấp lên phiên bản hỗ trợ các quy tắc của giao thức mới. Hãy luôn nâng cấp trước thời kỳ fork cứng.
Q: Tôi có thể chạy một node trên Windows không?
A: Chỉ qua WSL2 (Windows Subsystem for Linux). Các phiên bản Windows gốc không được hỗ trợ chính thức. Tốc độ trong WSL2 gần như tương đương với phiên bản gốc.
Các bước tiếp theo
Bây giờ khi nút Cardano của bạn đang chạy, hãy xem xét các đường dẫn sau:
- Quản trị viên của kho chứa stake — Cài đặt cặp sản xuất khối + relay, đăng ký kho chứa
Các nguồn tài nguyên và tham khảo
- Danh sách tài liệu chính thức: https://docs.cardano.org/
- Cardano Node GitHub: https://github.com/IntersectMBO/cardano-node
- Cardano CLI Reference: https://github.com/IntersectMBO/cardano-cli
- Testnet Faucets: https://testnets.cardano.org/
- Topology cộng đồng: https://github.com/cardano-community/guild-operators
- Stack giám sát: https://github.com/cardano-community/cardano-node-exporter
Danh sách này bao gồm phiên bản node Cardano 10.x (thời kỳ Conway). Chi tiết cấu hình có thể thay đổi khi nâng cấp giao thức trong tương lai. Hãy luôn tham khảo các ghi chú phát hành chính thức cho phiên bản cụ thể của bạn.
