Trong lĩnh vực khoa học máy tính, node nghĩa là một điểm kết nối đóng vai trò nhận biết, xử lý và lưu trữ dữ liệu trên mạng viễn thông. Node có thể là bất kỳ loại thiết bị nào (máy tính, điện thoại, các máy chủ lớn hơn) và có địa chỉ IP khác nhau. Các node sẽ liên kết và truyền dữ liệu cho nhau để tạo thành một mạng lưới lớn hơn.
Tuy nhiên, định nghĩa hay vai trò cụ thể của node sẽ còn phụ thuộc vào từng mạng lưới và lĩnh vực khác nhau.
Vậy node trong blockchain là gì? Tầm quan trọng và cách hoạt động của node blockchain ra sao? Có những loại node nào trên blockchain và làm thế nào để chạy một node?
Node là gì?
Node là các thiết bị điện tử (máy tính, laptop, điện thoại…) có thể tương tác và kết nối với nhau để tạo thành một mạng lưới blockchain; giúp truyền, lưu trữ và quản lý dữ liệu trên mạng lưới đó. Node đảm nhiệm các vai trò quan trọng như duy trì sự đồng thuận của blockchain; xác thực và ghi giao dịch lên khối (block); giám sát hoạt động để đảm bảo an ninh, bảo mật của mạng lưới.
Về mặt lý thuyết, một blockchain tồn tại dựa trên sự liên kết giữa các node mà không cần một máy chủ trung tâm. Mỗi node là một thiết bị riêng biệt, lưu trữ toàn bộ dữ liệu trên blockchain và liên tục trao đổi với nhau để đảm bảo các node luôn được cập nhật dữ liệu mới nhất.
Node trong blockchain hoạt động như thế nào?
Node đảm nhiệm 3 vai trò chính: duy trì, xác thực và cung cấp quyền truy cập vào mạng lưới. Có thể xem node là người giám sát của blockchain.
Mỗi blockchain là một cuốn sổ cái chứa toàn bộ dữ liệu giao dịch đã được mã hóa và có thể ghi nhận thêm dữ liệu mới. Và mỗi node đều phải lưu trữ một bản sao dữ liệu trong sổ cái đó.
Khi người dùng gửi yêu cầu thực hiện giao dịch trên blockchain, thông tin giao dịch sẽ được gửi đến thợ đào hoặc trình xác thực để đợi được xác nhận. Sau đó, tuỳ vào thuật toán đồng thuận của blockchain để quyết định rằng:
- Giao dịch đó sẽ được xác thực và ghi lên khối (block) mới bởi thợ đào (miner) hoặc trình xác thực (validator).
- Thông tin khối chứa giao dịch sẽ được gửi tới tất cả các node khác trên mạng lưới.
Các node sẽ cùng xác thực tính hợp lệ và đúng đắn của giao dịch, để quyết định chấp nhận thông qua hay từ chối khối đó. Nếu các node cùng xác thực và thêm thông tin khối vào bản sao của họ, blockchain sẽ đạt được sự đồng thuận và giao dịch được thực hiện. Đồng thời, tất cả các node phải cập nhật thông tin về khối mới được thêm vào blockchain để đảm bảo tính đồng bộ dữ liệu trong mạng lưới.
Tóm lại, các node trong mạng blockchain sẽ phải thực hiện các nhiệm vụ sau:
- Kiểm tra xem một khối giao dịch có hợp lệ không và chấp nhận hoặc từ chối nó.
- Nếu chấp nhận, các node sẽ lưu trữ dữ liệu về khối đó.
- Các node phát và truyền dữ liệu giao dịch này đến các node khác để cập nhật và đồng bộ hóa với blockchain.
Tầm quan trọng của node trong blockchain
Node đóng vai trò quan trọng trong việc vận hành và duy trì tính toàn vẹn, bảo mật của mạng. Nếu không có node, blockchain không thể hoạt động đúng cách, đồng thời dữ liệu lưu trữ trên mạng lưới có thể bị thao túng và tin tặc dễ dàng thực hiện hành vi gian lận.
Cơ chế hoạt động của node cũng giúp blockchain đảm bảo các tính chất như:
- Tính chính xác: Nhiều node cùng xác thực giao dịch dựa trên một thuật toán đồng thuận phức tạp, điều này giúp duy trì tính đúng đắn của dữ liệu trên blockchain.
- Tính minh bạch: Mỗi node đều lưu trữ một bản sao của sổ cái chứa toàn bộ dữ liệu giao dịch trên mạng lưới, để đảm bảo rằng blockchain minh bạch và tất cả những người tham gia vào hệ thống node đều truy cập vào cùng một thông tin.
- Tính phân tán: Mạng lưới blockchain được duy trì bởi các node trong hệ thống trên toàn cầu. Điều này giúp phân tán sức mạnh tính toán trên nhiều máy tính khác nhau để đảm bảo kết quả tốt hơn.
- Tính phi tập trung: Các node liên kết với nhau để tạo thành mạng lưới blockchain, chúng không bị kiểm soát bởi bất kỳ một thực thể hay tổ chức trung gian nào. Sự phân quyền này giúp cho blockchain trở nên đáng tin cậy hơn, đồng thời loại bỏ được việc thao túng dữ liệu.
- Tính đồng thuận: Các node phải tuân theo cơ chế đồng thuận của blockchain để xác thực và ghi dữ liệu lên khối, điều này giúp blockchain ngăn chặn các tác nhân độc hại chiếm quyền điều khiển mạng lưới (tấn công hijacking).
Phân loại node blockchain
Nhìn chung, có hai loại node chính là Full node và Light node, trong đó:
- Full node lưu trữ bản sao của dữ liệu lịch sử giao dịch trên blockchain, bao gồm dữ liệu của tất cả các block đã được tạo.
- Light node chỉ lưu trữ tiêu đề khối (block header), giúp tiết kiệm dung lượng ổ cứng cho người tham gia hệ thống node.
Full Node
Full node hoạt động như một máy chủ (server) trong mạng lưới phi tập trung. Nhiệm vụ chính của full node bao gồm duy trì sự đồng thuận giữa các node khác và xác minh các giao dịch.
Full node cũng lưu trữ một bản sao của sổ cái blockchain, do đó nó an toàn hơn và cho phép các chức năng nâng cao như quyền biểu quyết cho các đề xuất trong blockchain.
Nếu có hơn 51% node (hoặc tỷ lệ khác tuỳ vào quy tắc của blockchain) không đồng ý với đề xuất, nó sẽ không được thông qua. Trong một số trường hợp, việc này có thể dẫn đến sự kiện hard fork và chia tách thành hai blockchain khác nhau. Điển hình nhất là sự kiện Bitcoin Hard Fork.
Một số đặc điểm chính của một full node:
- Lưu trữ đầy đủ dữ liệu blockchain.
- Tham gia xác thực khối, xác minh tất cả các khối và trạng thái.
- Tất cả các trạng thái có thể bắt nguồn từ full node.
- Cung cấp dữ liệu theo yêu cầu cho các light node.
Light node
Light node, hay Simple Payment Verification (SPV) node, tức node xác minh thanh toán đơn giản.
Light node có thể được xem là phiên bản rút gọn của full node. Thay vì lưu trữ toàn bộ blockchain, nó dựa vào các full node khác để xác thực giao dịch và truy vấn thông tin để tạo các tiêu đề khối (block header).
Việc chạy light node giúp tiết kiệm bộ nhớ và không yêu cầu nhiều tài nguyên, tuy nhiên, khả năng xác thực giao dịch, tham gia quá trình đồng thuận và bảo mật blockchain của nó cũng sẽ bị hạn chế so với full node.
Vì vậy, light node thường được sử dụng trong ứng dụng yêu cầu tài nguyên thấp như ví tiền điện tử.
Lưu ý khi chạy node trên blockchain
Ai có thể chạy một node trên blockchain?
Về mặt lý thuyết, bất kỳ ai cũng có thể tham gia vào hệ thống và chạy node trên blockchain. Tuy nhiên trên thực tế, yêu cầu về việc chạy node còn tùy thuộc vào thuật toán đồng thuận của các blockchain. Ví dụ như:
- Proof of Work (PoW) là thuật toán dựa trên sức mạnh tính toán của node để trở thành thợ đào, giải mã hash của khối và tham gia xác thực giao dịch. Các blockchain PoW (như Bitcoin, Litecoin, Ethereum 1.0…) yêu cầu dàn máy đào có phần cứng và điện năng tiêu thụ lớn, dẫn đến chi phí rất cao.
- Proof of Stake (PoS) là thuật toán dựa trên lượng token mà người dùng nắm giữ. Nói cách khác, chỉ có một lượng “top holder” có quyền chạy node cho các blockchain PoS (như Polkadot, Avalanche, Cardano…).
- Proof of Authority (PoA) là thuật toán đồng thuận dựa trên danh tiếng. Các blockchain sử dụng PoA (như BNB Chain, Okexchain, HECO…) yêu cầu các node phải là người có danh tiếng và uy tín trong cộng đồng.
Bên cạnh đó, cũng tuỳ vào mạng lưới blockchain mà việc chạy node sẽ mang lại các phần thưởng khác nhau cho người tham gia, ví dụ như phí giao dịch, token, quyền quản trị….
Yêu cầu để chạy node
Để chạy một node trên blockchain, người dùng cần chuẩn bị:
- Tài nguyên phần cứng: Máy tính chuyên dụng có sức mạnh xử lý (CPU), dung lượng lưu trữ (storage) và bộ nhớ (RAM) đủ lớn để đáp ứng và xử lý các yêu cầu của việc chạy node. Tuỳ các blockchain mà yêu cầu về phần cứng sẽ khác nhau.
- Mạng internet: Kết nối mạng internet ổn định và đáng tin cậy để đảm bảo node luôn cập nhật kịp thời và đồng bộ với mạng lưới. Nhằm tránh các rủi ro offline khiến mạng hoạt động không ổn định và node bị phạt (slashing).
- Phần mềm: Tuỳ theo yêu cầu của blockchain mà người dùng phải tải và cài đặt phần mềm phù hợp để chạy node.
- Kiến thức kỹ thuật: Trang bị đầy đủ kiến thức về công nghệ blockchain để có thể xây dựng cấu hình máy phù hợp và khắc phục sự cố của node khi cần thiết.
Hướng dẫn chạy node blockchain chi tiết
Về cơ bản, việc thiết lập và chạy một node blockchain sẽ bao gồm 5 bước:
- Thuê VPS: Có rất nhiều trang cung cấp dịch vụ thuê VPS, hướng dẫn dưới phía dưới sẽ sử dụng Contabo.
- Nhận và nhập thông tin đăng nhập: Thông tin đăng nhập được gửi đến email đã đăng ký trên trang thuê VPS.
- Cài đặt hàm tmux: Đây là hàm để việc chạy node vẫn được duy trì kể cả khi máy tính đã tắt.
- Chạy node: Tùy yêu cầu của dự án mà người dùng sẽ nhập các lệnh khác nhau để chạy node.
- Reinstall node (không bắt buộc): Để xoá tất cả dữ liệu lưu trữ trong node.
Bước 1: Thuê VPS
VPS (Virtual Private Server) có thể hiểu là máy tính ảo để người dùng chạy code. Việc mua VPS giống như mua một chiếc máy tính khác nhưng không sở hữu vật lý.
Vậy tại sao phải mua VPS để chạy node? Bởi không thể đảm bảo dự án nào cũng có bảo mật tốt, trong trường hợp xấu nhất (mạng bị tấn công, hack…) sẽ gây ảnh hưởng đến dữ liệu trên máy tính của người dùng.
Để thuê VPS trên Contabo, người dùng cần:
- Truy cập https://contabo.com và chọn máy chủ (server) VPS rẻ nhất.
- Chọn gói VPS cụ thể, mình cũng chọn gói rẻ nhất.
- Chọn thời hạn (term length) và khu vực (region). Tuỳ vào khả năng tài chính để lựa chọn phù hợp.
- Kéo xuống và nhập mật khẩu (password) theo ý muốn. Các thông tin còn lại giữ nguyên, bao gồm bộ nhớ 200 GB SSD, hệ điều hành Ubuntu… và bấm Next.
- Cuối cùng, điền thông tin cá nhân và thẻ thanh toán để hoàn tất thuê VPS.
Bước 2: Nhận thông tin đăng nhập
Hệ thống sẽ gửi cho người dùng một email xác nhận thanh toán. Sau đó, hệ thống sẽ tiếp tục gửi một email để cung cấp tài khoản và mật khẩu đăng nhập.
Tiếp theo, người dùng truy cập tại đây và đổi mật khẩu theo các bước như sau:
- Chọn Your services.
- Bấm Manage → Control.
- Chọn Password Reset.
- Nhập mật khẩu mới để hoàn tất.
Sở dĩ có bước đổi mật khẩu là do mật khẩu cung cấp ban đầu của Contabo không thể đăng nhập được (chưa rõ nguyên nhân).
Bước 3: Nhập thông tin đăng nhập
Thông tin đăng nhập bao gồm:
- Địa chỉ IP trong email chứa thông tin đăng nhập.
- Mật khẩu đã đổi ở trên.
Tùy vào hệ điều hành mà người dùng cần bấm các tổ hợp phím khác nhau để đăng nhập:
- Đối với Windows: Bấm tổ hợp phím Start + R; nhập CMD và bấm Enter.
- Đối với MacOS: Bấm tổ hợp phím Command + Space; nhập Terminal và bấm Enter.
Nhập cú pháp sau để đăng nhập vào VPS:
ssh root@<địa chỉ IP>
Sau đó bấm Enter. Ví dụ:
ssh root@129.87.192.100
Với các VPS lần đầu đăng nhập vào máy, hệ thống hiện lên một câu hỏi. Người dùng chỉ cần nhập yes (viết thường) và bấm Enter.
Tiếp theo, nhập mật khẩu đã đổi ở trên vào. Lưu ý, các kí tự mật khẩu sẽ không hiển thị trên Terminal, nên người dùng cứ nhập bình thường và đảm bảo chính xác là được.
Sau khi hoàn tất, bấm Enter.
Bước 4: Nhập hàm tmux
tmux là hàm để chạy node kể cả khi tắt máy tính. VPS chỉ là máy tính thông thường, khi chúng ta tắt Terminal, VPS cũng sẽ tắt và mọi hoạt động cũng dừng theo. Điều này khiến việc chạy node bị ngừng lại.
Để khắc phục điều này, ta cần cài thêm hàm tmux. Node trong tmux sẽ chạy vĩnh viễn đến khi chúng ta chủ động nhập lệnh dừng lại.
Sau khi đăng nhập thành công, người dùng cài tmux bằng lệnh sau:
apt install tmux
Sau đó bấm Enter.
Nhập lệnh sau để truy cập vào tmux:
tmux
Sau đó bấm Enter.
Bước 5: Chạy Node
Thông qua các bước trên, chúng ta đã hoàn tất thiết lập và sẵn sàng để chạy Node. Phần còn lại tùy thuộc vào từng dự án sử dụng ngôn ngữ lập trình và thiết kế khác nhau mà có các lệnh khác nhau. Người dùng chỉ cần làm theo hướng dẫn của dự án để thực hiện các lệnh theo yêu cầu.
Bước 6: Cài đặt lại node (không bắt buộc)
Cài đặt lại node (reinstall node) là hành động xóa tất cả dữ liệu trong node. Sau khi reinstall, node đó sẽ thành một node mới hoàn toàn. Cách reinstall như sau:
Sau khi đăng nhập vào VPS, bấm Your services.
Bấm Manage, chọn Reinstall.
Nhập mật khẩu, bấm Star Installation.
Thanh trạng thái sẽ là Pending → Running → Finish. Nếu đợi khoảng 10 phút mà không thấy Finish, có thể bấm Refresh để làm mới trạng thái.