HướNG DẫN
Cách chạy một node Bitcoin đầy đủ trên VPS
Một node đầy đủ là cách duy nhất để sử dụng Bitcoin mà không phải hỏi người khác đâu là sự thật. Mọi lựa chọn khác — một trình khám phá khối, một ví nhẹ nói chuyện với một máy chủ công cộng, số dư trên một sàn giao dịch — đều có nghĩa là bạn đang tin tưởng một bên thứ ba với lịch sử giao dịch của mình, và trao luôn cả quyền riêng tư của bạn trong quá trình đó. Bản thân Bitcoin Core chỉ mất khoảng mười phút để cài đặt. Thứ thực sự quyết định node của bạn có hữu ích hay không chính là cỗ máy bên dưới nó: bạn cấp cho nó bao nhiêu dung lượng đĩa, việc tải lên có bị giới hạn dung lượng hay không, và host có thể nhìn thấy những gì.
Node đầy đủ làm được gì — và không làm được gì
Một node đầy đủ tải về mọi khối, tự mình kiểm tra mọi chữ ký và mọi quy tắc đồng thuận, và duy trì bản sao riêng của nó về tập hợp coin có thể chi tiêu tại thời điểm hiện tại. Nó là một trình xác minh. Nó không phải thợ đào, và tự thân nó cũng không phải một ví.
- Nó tự xác minh một cách độc lập — không một trình khám phá khối, sàn giao dịch hay máy chủ ví nhẹ nào được quyền nói cho bạn biết điều gì hợp lệ hay số dư của bạn là bao nhiêu.
- Nó ngăn bạn làm rò rỉ địa chỉ của mình cho máy chủ của người lạ mỗi khi một ví đồng bộ — đây là rò rỉ quyền riêng tư lớn nhất mà hầu hết người dùng Bitcoin gặp phải.
- Nó chuyển tiếp các khối và giao dịch đi tiếp, đây là phần giúp ích cho toàn mạng lưới chứ không chỉ riêng bạn.
- Nó không kiếm được gì, không biểu quyết cho điều gì, và không làm coin của bạn an toàn hơn nếu khóa của bạn vốn đã bị xử lý cẩu thả.
Archival, Pruned hay Indexed: ba mức dung lượng đĩa rất khác nhau
Quyết định duy nhất này sẽ quyết định gói bạn cần, nên hãy đưa ra nó trước khi đặt mua bất cứ thứ gì. Cả ba chế độ đều xác minh blockchain theo đúng một cách giống hệt nhau — khác biệt duy nhất là bao nhiêu phần dữ liệu đó còn được giữ lại trên đĩa sau khi việc xác minh hoàn tất.
- Pruned — Core tải về và kiểm tra mọi thứ, sau đó loại bỏ các tệp khối cũ và chỉ giữ lại những tệp gần đây. Với prune=5000, dữ liệu khối duy trì ở khoảng 5 GB; cộng thêm tập UTXO và hệ điều hành, tổng dung lượng rơi vào khoảng 25 GB.
- Archival — mọi khối được giữ lại vĩnh viễn. Dữ liệu khối hiện đã vượt qua 750 GB và tăng thêm khoảng 7 GB mỗi tháng, chưa kể tập UTXO cộng thêm vào đó. Bạn cần chế độ này để phục vụ các khối lịch sử cho peer khác, hoặc để reindex sau này mà không phải tải lại blockchain.
- Indexed — archival cộng thêm txindex=1, cho phép tra cứu bất kỳ giao dịch nào theo ID và là thứ mà các trình khám phá khối cũng như một số phần mềm server yêu cầu. Nó cộng thêm hàng chục gigabyte, và không thể kết hợp với pruning.
Chọn VPS cho node Bitcoin: đĩa, RAM và cổng mạng unmetered
Bitcoin Core khá dễ tính với CPU nhưng rất khó tính với ổ đĩa. Các thao tác đọc/ghi ngẫu nhiên vào cơ sở dữ liệu UTXO mới là thứ quyết định việc đồng bộ diễn ra nhanh hay khổ sở, đó là lý do NVMe quan trọng hơn số lõi CPU rất nhiều ở đây. Mọi gói trong dòng VPS offshore đều trang bị NVMe Gen4 chạy RAID-10 và băng thông unmetered, nên lựa chọn thực sự chỉ nằm ở dung lượng.
- Node pruned: VPS-4 giá $7.49/mo — 2 vCPU EPYC, 4 GB DDR5 ECC và 60 GB NVMe, dư sức chứa cho prune=5000 cộng thêm log. VPS-2 giá $3.99 cũng dùng được nếu bạn prune mạnh tay hơn.
- Node pruned đồng bộ nhanh: VPS-8 giá $13.99/mo — 4 vCPU và 8 GB cho phép bạn cấp cho Core vài gigabyte dbcache, đòn bẩy lớn nhất duy nhất để rút ngắn thời gian đồng bộ.
- Node archival: VPS-64 giá $89.99/mo là gói VPS duy nhất có 800 GB NVMe vừa đủ chứa một blockchain không pruned — và với dung lượng hiện tại, dư địa đó chỉ còn chưa đầy một năm.
Với một node archival hay indexed, hãy làm phép tính một cách trung thực thay vì theo phản xạ mua ngay gói VPS lớn nhất: một máy chủ dedicated khởi điểm từ $64/mo với 64 GB bộ nhớ và 2 × 1 TB NVMe, vừa rẻ hơn vừa rộng rãi hơn nhiều so với gói VPS lớn nhất. Nếu bạn định giữ blockchain trong nhiều năm, hoặc muốn chạy thêm một máy chủ Electrum và một website được host mà không cần KYC bên cạnh, hãy bắt đầu ngay ở đó thay vì nâng cấp hai lần.
Từng bước: từ nạp tiền bằng crypto đến một node đồng bộ xong
- 01Tạo tài khoản bằng một email dùng một lầnChỉ cần một email và một mật khẩu. Không tên, không số điện thoại, không giấy tờ tùy thân, nên phía chúng tôi không có gì liên kết node với bạn.
- 02Nạp số dư bằng cryptoNạp số dư trả trước bằng Bitcoin, Monero hoặc bất kỳ đồng nào trong số 8 coin được hỗ trợ. Số dư không bao giờ hết hạn và không bao giờ bị đóng băng.
- 03Triển khai VPSChọn một gói, một khu vực và một image Debian hoặc Ubuntu. Quyền truy cập root sẵn sàng trong khoảng một phút ở mức trung vị.
- 04Cài đặt Bitcoin Core và xác minh bản tải vềLấy bản phát hành từ dự án Bitcoin Core rồi kiểm tra chữ ký trước khi giải nén. Bỏ qua bước này là cách nhiều người vô tình chạy phải bản binary của người khác.
- 05Chạy node dưới quyền một user riêng bằng systemdMột user bitcoin riêng, một thư mục dữ liệu do chính nó sở hữu, và một unit file để node tự khởi động lại sau khi reboot.
- 06Viết bitcoin.conf, khởi động và theo dõi logĐặt mức prune, dbcache và các tùy chọn mạng, khởi động dịch vụ, rồi theo dõi log cho đến khi tiến trình xác minh đạt 1.
Những dòng bitcoin.conf thực sự quan trọng
Core đi kèm các giá trị mặc định hợp lý, và một cấu hình tốt thường chỉ cần sáu hay bảy dòng. Đây là những dòng đáng để hiểu rõ thay vì chỉ copy từ một bài đăng trên forum.
- dbcache — bộ nhớ dành cho cơ sở dữ liệu UTXO, mặc định 450 MB. Tăng lên vài nghìn cho lần đồng bộ ban đầu là cách tăng tốc rẻ nhất hiện có, và bạn có thể hạ nó xuống lại sau đó.
- prune — giới hạn dung lượng tính bằng MB cho việc lưu trữ khối, tối thiểu 550. Chuyển từ pruned sang archival sau này đồng nghĩa với việc phải tải lại blockchain, nên hãy quyết định trước lần khởi động đầu tiên.
- txindex=1 — xây dựng một chỉ mục giao dịch đầy đủ. Chỉ bật nó nếu có một công cụ bạn thực sự đang dùng cần đến; thêm vào sau này sẽ buộc phải reindex.
- listen=1 cùng với cổng 8333 mở — biến bạn thành một listening node mà các peer khác có thể kết nối tới. Đây là khác biệt giữa việc chỉ sử dụng mạng lưới và việc đóng góp cho nó.
- maxuploadtarget — một mức trần mềm hằng ngày cho lưu lượng đi ra, đáng để thiết lập trên bất kỳ host nào tính phí theo dung lượng truyền tải.
- blocksonly=1 — ngừng chuyển tiếp các giao dịch rời rạc. Nó cắt giảm băng thông đáng kể, đổi lại là một mempool hữu ích và khả năng hỗ trợ lan truyền giao dịch.
Tải khối ban đầu: điều gì thực sự khiến nó chậm
Lần đồng bộ đầu tiên là phần việc nặng nhọc thực sự duy nhất. Core phát lại toàn bộ blockchain, và dù mặc định nó bỏ qua việc kiểm tra script bên dưới một khối gần đây được ghi cứng sẵn (hardcoded), nó vẫn phải xây dựng lại toàn bộ tập UTXO từ đầu — nên phần việc chủ yếu bị chi phối bởi thao tác I/O đĩa ngẫu nhiên và băm dữ liệu, chứ không phải bởi kết nối mạng của bạn. Trên NVMe Gen4 với dbcache rộng rãi, một lần đồng bộ đầy đủ thường hoàn tất trong chưa tới một ngày; cùng công việc đó trên một ổ đĩa cơ (spinning disk) có thể chạy cả tuần. Hãy cấp cho nó nhiều bộ nhớ hơn thay vì nhiều lõi hơn, và cưỡng lại việc khởi động lại vì sốt ruột: tiến trình được ghi ra định kỳ, nhưng khởi động lại giữa lúc đang flush sẽ khiến bạn mất luôn phần cache mà mình đã phải trả giá để có được.
Chạy node qua Tor
Một listening node tự công bố sự hiện diện của nó cho các peer. Trên một địa chỉ clearnet, việc công bố đó là công khai, và nó trỏ thẳng đến server của bạn. Core hỗ trợ Tor ở mức hạng nhất: cấp cho nó một Tor SOCKS proxy cục bộ và quyền truy cập control port của Tor, nó sẽ tự công bố dịch vụ onion của riêng mình và chấp nhận kết nối đến tại đó. Thêm onlynet=onion và nó sẽ hoàn toàn không giao tiếp với clearnet nữa.
Đây là một việc hoàn toàn khác với chạy một Tor relay, vốn mang lưu lượng của người khác và cố tình mang tính công khai. Ở đây Tor chỉ đơn giản là cách node của riêng bạn tiếp cận các peer của nó, và sự đánh đổi là không đáng kể: các node chỉ dùng onion đồng bộ chậm hơn đôi chút và lấy peer từ một nhóm nhỏ hơn — điều hiếm khi là vấn đề đối với một cỗ máy mà bạn cứ để chạy liên tục.
Băng thông: chi phí không ai dự trù
Một listening node tải lên nhiều hơn hẳn so với tải xuống. Mỗi peer đang tự đồng bộ ban đầu có thể kéo về hàng trăm gigabyte từ node của bạn, và một node archival kết nối tốt sẽ sẵn sàng phục vụ vài terabyte mỗi tháng nếu bạn để nó làm vậy. Trên một host tính phí theo dung lượng, đó là một hóa đơn vượt mức — đúng chính xác kiểu lưu lượng mà các gói hosting "unlimited" được viết điều khoản để loại trừ. Băng thông unmetered là tiêu chuẩn xuyên suốt các gói ở đây, và nếu bạn muốn tích cực chia sẻ blockchain cho người khác, dòng 10 Gbps Unmetered từ $34.99/mo đi kèm một cổng riêng dành cho việc đó. Nếu bạn muốn giữ ở quy mô nhỏ, hãy chủ động giới hạn bằng maxuploadtarget thay vì phó mặc cho may rủi.
Kết nối ví, máy chủ Electrum hoặc BTCPay
Riêng bản thân một node mới chỉ là một nửa của việc thiết lập — mục đích là để phần mềm của chính bạn nói chuyện với nó thay vì với máy chủ của người lạ. Các ví như Sparrow và Specter kết nối thẳng tới RPC của Core qua một đường hầm. Các ví theo giao thức Electrum cần một máy chủ trung gian: electrs hoặc Fulcrum tự xây dựng chỉ mục riêng từ các tệp khối thô, đây là một trong những lý do cụ thể để giữ node ở chế độ không pruned. Và nếu bạn muốn tự nhận thanh toán, BTCPay Server chạy dựa trên node của bạn sẽ loại bỏ hoàn toàn bên xử lý thanh toán trung gian — cùng logic tự vận hành (self-hosting) như dựng một website mà không cần KYC.
Có một nguyên tắc luôn đúng bất kể bạn dùng bộ công cụ nào: node đảm nhiệm việc xác minh, còn khóa của bạn sống ở một nơi khác. Hãy dùng một ví cứng hoặc một offline signer (thiết bị ký ngoại tuyến), và để cỗ máy đi thuê chỉ làm mỗi việc xác thực. Một cỗ máy mà bạn không sở hữu vật lý không phải là nơi nên đặt số tiền có giá trị thực sự.
Sự đánh đổi quyền riêng tư thẳng thắn của một node bạn không sở hữu
Một node trên VPS không giống hệt một node đặt dưới gầm bàn của bạn, và cần phải nói rõ vì sao. Nó loại bỏ rò rỉ lớn nhất và phổ biến nhất: việc truy vấn các trình khám phá khối công cộng và các máy chủ Electrum của bên thứ ba — những nơi ghi lại chính xác bạn đã hỏi về địa chỉ nào. Thứ nó không thể loại bỏ là chính nhà cung cấp host. Bất kỳ ai có quyền truy cập vật lý vào một cỗ máy đều về nguyên tắc có thể đọc được ổ đĩa và bộ nhớ của nó, và mã hóa toàn ổ đĩa trên một server từ xa chỉ bảo vệ bạn trước một ổ đĩa bị đánh cắp, chứ không phải một ổ đĩa đang chạy.
Vậy nên câu hỏi thực sự đáng quan tâm không phải là "host có nhìn thấy nó không" mà là "host có biết tôi là ai không". Hosting không KYC trả lời đúng câu đó: chỉ cần một email và một mật khẩu, không xác minh, không có gì được lưu lại để bị rò rỉ hay bị yêu cầu cung cấp. Thanh toán từ số dư crypto loại bỏ luôn sự hiện diện của ngân hàng. Bạn muốn đẩy khía cạnh thanh toán đi xa đến đâu là một lựa chọn thuộc về threat model (mô hình rủi ro) của riêng bạn — Bitcoin mang tính danh tính giả, không ẩn danh, nên các đồng coin truy ngược về một sàn giao dịch đã xác minh danh tính vẫn dẫn tới đâu đó, trong khi nạp tiền bằng Monero khép lại khoảng hở đó ở cấp độ giao thức. Lý lẽ tương tự cũng áp dụng cho việc chạy một node Monero, nơi thứ bạn đang bảo vệ là mối liên kết giữa ví và node.
Những sai lầm khiến node bị kẹt, bỏ không hoặc bị lộ
- Ổ đĩa bị đầy giữa chừng đồng bộ vì việc pruning được quyết định sau khi đã lỡ — hãy thiết lập nó trước lần khởi động đầu tiên, không phải giữa chừng.
- Cổng 8333 bị bỏ đóng ở firewall, khiến node chỉ tạo được kết nối đi ra và không bao giờ phục vụ được dù chỉ một peer.
- RPC được bind vào 0.0.0.0 "chỉ để test", và trên một IP công cộng thì điều đó bị phát hiện chỉ trong vài giờ.
- txindex được bật theo phản xạ trên một ổ đĩa nhỏ, để rồi phát hiện ra rằng gỡ nó đi cần một lần reindex đầy đủ.
- Node được chạy bằng quyền root từ một thư mục home mà không có unit systemd nào, nên chỉ một lần reboot cũng lặng lẽ kết thúc thử nghiệm.
Không có sai lầm nào trong số này là kỳ lạ hay hiếm gặp. Đó là những gì xảy ra khi cỗ máy được chọn chỉ dựa trên giá, còn các chi tiết bị để lại tính sau. Hãy chọn dung lượng đĩa đúng với chế độ bạn thực sự muốn, giữ cổng peer luôn mở và cổng RPC luôn đóng, và một node Bitcoin sẽ là một trong những thứ ít đòi hỏi công chăm sóc nhất mà bạn có thể để chạy suốt nhiều năm.