Nodes

Node (nút) là một thiết bị trên mạng blockchain, là thành tố nền tảng cho phép công nghệ hoạt động và tồn tại. Các nút giúp lưu trữ, truyền tải và bảo quản dữ liệu blockchain, vì vậy về mặt lý thuyết, một blockchain tồn tại trên các Node. Các nút được rải trong một mạng lưới rộng và thực hiện nhiều tác vụ khác nhau.

Node có thể là bất kỳ loại thiết bị nào, nó có thể là PC, Laptop, các máy chủ lớn hơn,... Các Node tạo thành cơ sở hạ tầng của một blockchain. Tất cả các Node trên một blockchain được kết nối với nhau, chúng liên tục trao đổi dữ liệu mới nhất với nhau để tất cả các Node luôn được cập nhật.

Node được tạo ra với mục tiêu chủ yếu là đảm bảo quá trình trao đổi và duy trì độ tin cậy của dữ liệu được lưu trữ trên blockchain. Chính vì vậy, vai trò của các Node đó chính là hỗ trợ mạng lưới hoạt động thông qua việc tạo ra và vận hành bản sao của blockchain. Thậm chí trong một số trường hợp, Node cũng được sử dụng để xử lý các giao dịch khác.

Mỗi một blockchain sẽ có các node khác nhau và được phân bổ theo cấu trúc khác nhau trong mạng lưới. Do vậy, mỗi loại tiền điện tử sẽ có những Node riêng biệt tùy thuộc vào đặc điểm của blockchain đó nhằm duy trì các bản ghi giao dịch đã diễn ra và được xác thực.


Phải yêu cầu về xử lý dữ liệu lớn và công suất tính toán. (Nguồn: beatdautu.com)

Đối với những Node thuộc phần riêng lẻ của blockchain, chúng sẽ có cấu trúc dữ liệu lớn hơn so với bình thường. Đồng thời, khi các thợ đào (validator) hay là chủ sở hữu của các Node này tự nguyện đóng góp những tài nguyên nhất định để nâng cao khả năng lưu trữ và xác thực dữ liệu thì họ sẽ có cơ hội thu về khoản phí giao dịch được thực hiện trên mạng lưới. Hơn nữa, những người này cũng có thể nhận về các phần thưởng token hấp dẫn. Quá trình này còn được gọi là “mining” (đào coin).

Tuy nhiên, để thực hiện các giao dịch trên đòi hỏi thợ đào phải xử lý các dữ liệu quy mô lớn với công suất tính toán cao. Điều này đòi hỏi họ phải đầu tư vào các Node với những thiết bị có CPU (đơn vị xử lý trung tâm) hay GPU (đơn vị xử lý đồ họa) quy mô lớn để đảm bảo quá trình lưu trữ, xác thực mọi giao dịch trong blockchain và kiếm về thù lao cho mình.

Ngoài ra, với những blockchain vận hành nhiều full node thì khả năng phục hồi dữ liệu vì những sự cố không may xảy ra càng cao. Tức là các node này không chỉ xác thực hay xử lý nhiều giao dịch mà còn góp phần khôi phục các dữ liệu trên mạng lưới trong trường hợp hệ thống gặp lỗi.

Mỗi blockchain sở hữu nhiều loại Node khác nhau tùy thuộc vào các phương thức đồng thuận của chúng. Có nhiều cách để phân loại Node, dựa vào tính khả dụng, vào chức năng của Node hay yêu cầu của blockchain,…

Tuy nhiên, theo cách phân loại thông thường và phổ biến nhất là dựa trên yêu cầu của blockchai. Node được chia làm hai loại chính bao gồm:

  • Full Node.
  • Lightweight Nodes.


Các node trong blockchain được chia làm hai loại chính là full Node và lightweight Nodes. (Nguồn: marginatm.com)

Full Nodes

Full note (note đầy đủ) hoạt động tương tự như một máy chủ trong mạng lưới phi tập trung. Các Node này sẽ tham gia vào quá trình xác minh dữ liệu, lưu trữ toàn bộ thông tin hay bản ghi giao dịch đồng thời hỗ trợ duy trì quy tắc đồng thuận của blockchain.

Thông thường một blockchain muốn tiến hành nâng cấp hay thêm các block mới đều cần sự xác thực của các full Node. Chính vì vậy mà loại Node này cũng có thể tự chuyển tiếp các giao dịch và có quyền biểu quyết trong blockchain.

Bên cạnh đó, các full Node còn đảm nhiệm vai trò quan trọng trong việc tăng cường tính bảo mật, an toàn của một blockchain thông qua những nhiệm vụ chủ chốt như sau:

Xác thực chữ ký trong mỗi giao dịch: Khi một block mới được thêm vào blockchain, full Node sẽ chịu trách nhiệm check từng chữ ký số để xác thực giao dịch. Chữ ký điện tử ở đây thường là private Node được sử dụng bởi người thực hiện giao dịch.

Xác thực và duy trì các quy tắc đồng thuận: Full Node có thể quyết định chấp thuận hay từ chối các giao dịch hay việc thêm block mới trong mạng lưới. Các lý do khiến một giao dịch không được chấp nhận xuất phát từ việc block được định dạng không chính xác hay các giao dịch diễn ra trùng lặp dẫn đến khả năng gian lận.

Lightweight Nodes

Lightweight Node (Node nhẹ) chủ yếu thực hiện chức năng cung cấp dữ liệu cần thiết và truy vấn trạng thái các giao dịch diễn ra hàng ngày để xử lý chúng. Loại Nodenày không tham gia vào quá trình xác thực các block và không lưu trữ bản sao của toàn bộ blockchain. Thay vào đó lightweight Nodes thường chỉ giữ tiêu đề khối (block header) phục vụ mục đích hỗ trợ và kiểm tra tính hợp lệ của các giao dịch trước đó.

Các ví dụ cụ thể về light Node có thể kể đến đó là máy tính để bàn hay ví trực tuyến…


Lightweight Node sẽ truy vấn trạng thái các giao dịch diễn ra hằng ngày. (Nguồn: marginatm.com)

Ngoài ra, các light Nodesẽ được kết nối với full Node và dựa vào full Node để cung cấp cho chúng dữ liệu đã được xác thực. Đồng thời light Node sẽ góp phần hỗ trợ blockchain trong quá trình phân cấp và phát triển mạng lưới.

Bên cạnh đó, việc xử lý ít các dữ liệu hơn so với full Node nên nguồn tài nguyên được sử dụng để vận hành light Node sẽ ít tiêu tốn hơn. Đây cũng là một trong những điều kiện giúp blockchain có thể hoạt động bền vững hơn so với việc chỉ sở hữu nhiều full Node.

Có nhiều loại Node khác nhau trong cùng blockchain. Những yêu cầu để sở hữu được Node là khác nhau tùy vào loại tiền thuật toán hoặc ứng dụng của blockchain và hệ phương thức đồng thuận mà chúng tạo ra. Các nút ở trong blockchain bao gồm:

  • Root Node- là nút cao nhất trong dãy cây nhị phân.
  • Parent Node- là nút mà có nhiều nút mở rộng từ nó.
  • Child Node- Nút được mở rộng từ một nút khác.
  • Leaf Node - là nút không có thêm nút con.
  • Sibling Nodes- các nút kết nối cùng với nút lớn (parent Node).
  • Tree - Cấu trúc dữ liệu được bắt đầu từ phần nút gốc (rood Node).
  • Forest - Một tập hợp bao gồm những cây nút.
  • Degree - là thứ bậc nút con của Node.
  • Edge - sự liên kết chặt chẽ giữa các nút.

Khi một thợ đào hay Validator (người xác thực) cố gắng thêm một block giao dịch mới vào blockchain, họ sẽ truyền block tới tất cả (hoặc một phần, tùy vào thuật toán đồng thuận của blockchain sử dụng) các Node trên mạng.


Node trong các Block. (Nguồn: coin98.net)

Dựa trên tính hợp pháp của block (tính hợp lệ của chữ ký và giao dịch), các Node có thể chấp nhận hoặc từ chối block đó. Khi một Node chấp nhận một block giao dịch mới, nó sẽ lưu trữ block đó trên đầu các block còn lại mà nó đã lưu trữ. Tóm lại, đây là những gì các Node làm:

  • Các Node kiểm tra xem một block 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ữ các block giao dịch (lưu trữ lịch sử giao dịch blockchain).
  • Các Node phát và lan truyền lịch sử giao dịch này đến các Node khác để đồng bộ hóa với blockchain (cập nhật về lịch sử giao dịch).

Về mặt lý thuyết, bất kỳ ai cũng có thể chạy một blockchain Node, nhưng tùy vào thuật toán đồng thuận của blockchain đó mà có có một số yêu cầu nhất định:

Với những Blockchain như BSC, Okexchain, HECO,... Chúng sử dụng thuật toán đồng thuận Proof of Authority (PoA), một thuật toán đồng thuận dựa trên danh tiếng. Có nghĩa là, để chạy Node cho các chain PoA thì bạn phải thực sự là người có danh tiếng trong cộng đồng đó, điều này không phù hợp với đại đa số người dùng phổ thông.


Thuật toán đồng thuận Proof Of Authority. (Nguồn: coin98.net)

Hay với blockchain sử dụng thuật toán đồng thuận DPoS, đây là thuật toán dựa trên giá trị số token mà người dùng nắm giữa, nói cách khác, chỉ có “top holder” mới có quyền để chạy các Node cho các blockchain này, điều này cũng không phù hợp với đại đa số người dùng phổ thông.


Thuật toán đồng thuận DPoS. (Nguồn: coin98.net)

Bên cạnh đó cũng có những blockchain phân quyền hơn, giới hạn gia nhập thấp hơn đáng kể như Ethereum. Ethereum khuyến khích người dùng tự chạy Node riêng để cho phép họ sử dụng Ethereum một cách tin cậy và riêng tư, trong khi vẫn hỗ trợ cho hệ sinh thái.

Một số lợi ích của việc tự chạy một Ethereum Full Node:

  • Node của bạn tự xác minh tất cả các giao dịch theo các quy tắc đồng thuận. Điều này có nghĩa là bạn không phải dựa vào bất kỳ Node nào khác trong mạng hoặc hoàn toàn tin tưởng vào chúng.
  • Bạn sẽ không phải rò rỉ địa chỉ và số dư ví của mình cho các Node ngẫu nhiên.
  • Dapp của bạn có thể an toàn và riêng tư hơn nếu bạn sử dụng Node của riêng mình.
  • Bạn có thể lập trình các RPC endpoints tùy chỉnh của riêng mình.

Một số lợi ích đem lại cho Ethereum Network:

  • Một tập hợp các Node đa dạng rất quan trọng đối với sự bảo mật và khả năng phục hồi hoạt động của Ethereum.
  • Các Node đầy đủ cung cấp quyền truy cập vào dữ liệu blockchain cho các Node nhẹ phụ thuộc vào nó.

Quy tắc đồng thuận

Các Full Node khi tải xuống khối, giao dịch và kiểm tra nó dựa trên những quy tắc đồng thuận của sàn Bitcoin. Dưới đây là một ví dụ cụ thể về quy tắc đồng thuận, mặc dù nó có nhiều quy tắc:

  • Các khối chỉ có thể tự tạo ra số bitcoin n nhất định.
  • Giao dịch phải có đầy đủ chữ ký chính xác dành cho bitcoin đang được chi tiêu.
  • Giao dịch và khối phải ở trong định dạng dữ liệu chính xác.
  • Trong mỗi chuỗi khối duy nhất, phần đầu ra giao dịch sẽ không thể chi tiêu được gấp đôi.

Nếu giao dịch hay một khối vi phạm những quy tắc đồng thuận, thì nó sẽ bị từ chối hoàn toàn. Ngay cả trong trường hợp mọi Node khác ở trên mạng đều cho rằng nó đang hợp lệ. Đây là một trong các đặc điểm rất quan trọng của nút đầy đủ. Chúng làm được gì đúng cho dù bị thế nào đi chăng nữa.

Còn đối với Full Node, người sử dụng khi khai thác thực sự phải có sức mạnh hạn chế. Họ chỉ có thể tự sắp xếp lại hay là loại bỏ mọi giao dịch. Và bằng cách chi tiêu nhiều công suất khi tính toán. Một thợ mỏ mạnh mẽ tự mình thực hiện một số các cuộc tấn công nghiêm trọng. Tuy nhiên vì các Full Node nên dựa vào thợ mỏ chỉ một số thứ. Những thợ mỏ không thể hoàn toàn thay đổi hoặc phá hủy Bitcoin.

Các Node có quy tắc đồng thuận khác nhau và thực sự dùng hai mạng tiền tệ cũng khác nhau. Khi thay đổi bất cứ quy tắc đồng thuận nào cũng đòi hỏi một cái nĩa cứng. Và có thể tạo ra một kiểu tiền tệ mới và toàn bộ mọi người muốn chuyển sang nó. Những quy tắc đồng thuận sẽ khác với quy tắc chính sách. Trong đó phải xác định cách Node hoặc thợ mỏ cần ưu tiên không khuyến khích nhiều thứ nhất định.


Chi tiêu nhiều công suất khi tính toán. (Nguồn: beatdautu.com)

Quy tắc chính sách có thể thay đổi cách tự do. Và Node khác nhau sẽ có những chính sách, quy tắc khác nhau. Bởi vì toàn bộ các nút đầy đủ phải dùng chính xác quy tắc đồng thuận tương tự. Nhằm duy trì sự tương thích với nhau. Thậm chí sẽ nhân đôi lỗi trong quy tắc đồng thuận ban đầu.

Để tạo ra Node đầy đủ từ đầu là khó khăn vô cùng và nguy hiểm. Do đó, khuyến cáo rằng toàn bộ những ai đang muốn chạy Full Node đều cần sử dụng phần mềm được dựa trên máy khách tham chiếu. Đó là cách duy nhất khách hàng được bảo đảm và hành xử một cách chính xác.

Tối thiểu, Full Node khi tải xuống thì tất cả giao dịch đã được diễn ra, giao dịch mới và các tiêu đề chặn. Ngoài ra, những nút đầy đủ đều phải lưu trữ thông tin về đầu ra của giao dịch chưa dùng cho đến khi được chi tiêu.

Theo mặc định, Full Node không có hiệu quả khi chúng tải xuống của từng giao dịch mới ít nhất là hai lần. Và chúng sẽ lưu trữ toàn bộ chuỗi khối, khoảng hơn 165 GB kể từ 20180214.

Mặc dù khách hàng chỉ yêu cầu kết quả của giao dịch chưa được thanh toán. Hiệu suất có thể sẽ cải thiện bằng cách bật phần blocksonly chế độ và cho phép tự cắt xén.


Lưu trữ thông tin về đầu ra của giao dịch. (Nguồn: beatdautu.com)

Các Node lưu trữ

Một tập con của Node là gì luôn đầy đủ cũng phải chấp nhận những kết nối đến và tải khối cũ lên trang khác trên mạng. Điều này sẽ xảy ra nếu như phần mềm được chạy với giá trị là listen = 1 mặc định. Nó trái ngược hoàn toàn với một số quan niệm sai lầm, là nút lưu trữ không cần thiết để được trở thành một nút đầy đủ.

Nếu như băng thông của người sử dụng bị hạn chế thì họ có thể dùng -listen=0. Còn nếu không gian phần đĩa của họ đang bị hạn chế, có thể sử dụng việc cắt tỉa. Trong khi vẫn là nút hợp lệ  hoàn toàn. Để thực thi những quy tắc đồng thuận của sàn và góp phần bảo mật cho tổng thể bitcoin.