
Cách giảm thiểu spam nhanh chóng với QUIC: Mọi điều bạn cần biết về Solana và QUIC
Bài viết này nói về điều gì?
Solana hiện là blockchain nhanh nhất và có khả năng mở rộng cao nhất trên thị trường. Nền tảng này nổi tiếng về tốc độ giao dịch, trở thành blockchain lý tưởng cho nhiều trường hợp sử dụng. Bất chấp những thành tựu đó, mạng Solana vẫn phải đối mặt với nỗi sợ hãi, sự không chắc chắn và hoài nghi (thường được viết tắt là FUD) liên quan đến thời gian ngừng hoạt động. Mặc dù FUD này từng là mối lo chính đáng, nhưng hiện tại nó không còn cơ sở. Tại sao? Trong năm qua, các kỹ sư tại Solana Labs đã triển khai nhiều nâng cấp mạng. Đáng chú ý nhất là thay thế giao thức tùy chỉnh dựa trên UDP thô dùng để tiếp nhận giao dịch của Solana bằng QUIC.
Trong bài viết này, chúng ta sẽ tìm hiểu cơ chế của các giao thức mạng TCP và UDP, đồng thời khám phá cách QUIC cải thiện cả hai. Sau đó, chúng ta sẽ chuyển trọng tâm sang Solana và thảo luận về những lợi thế cụ thể mà QUIC mang lại. Bài viết nhằm giúp bạn hiểu toàn diện lý do nâng cấp mạng này là một cột mốc kỹ thuật quan trọng đối với Solana.
Các nâng cấp mạng Solana
Ngày 13 tháng 12 năm 2022, Solana Foundation đã đăng một bài viết có tiêu đề “Các nâng cấp mạng Solana”. Bài viết trình bày một số nâng cấp đang được thực hiện trên mạng cùng tiến độ tương ứng. Các nâng cấp gồm:
QUIC
- Hiện đã hoạt động trên Mainnet-beta
QoS tính theo trọng số stake
- Hiện đã hoạt động trên Mainnet-beta
Thị trường phí
- Hiện đã hoạt động trên Mainnet-beta; hỗ trợ RPC và ví sẽ sớm ra mắt
- Bạn có thể theo dõi tiến độ tại đây
Tăng kích thước giao dịch
- Hiện đang được phát triển
Trạng thái biểu quyết nhỏ gọn
- Hiện đã hoạt động trên Testnet
Một trong những nguyên nhân chính khiến Solana từng ngừng hoạt động là spam. Một số ví dụ gồm:
- Spam Grape IDO vào ngày 14 tháng 9 năm 2021
- Các cuộc tấn công DDoS diễn ra từ ngày 6 đến 12 tháng 1 năm 2022
- Spam mint NFT diễn ra từ ngày 30 tháng 4 đến ngày 1 tháng 5 năm 2022
Không có trường hợp ngừng hoạt động nào liên quan đến spam được ghi nhận trên Solana kể từ khi triển khai QUIC. Điều này đánh dấu QUIC là một thành tựu mang tính bước ngoặt trong việc cải thiện lưu lượng mạng và khả năng tiếp nhận dữ liệu của Solana. Trước khi tìm hiểu về QUIC, trước tiên chúng ta cần khám phá cơ chế của các giao thức mạng. Việc hiểu rõ hơn các nguyên tắc cơ bản của mạng sẽ giúp chúng ta nhận ra tác động thực sự của QUIC đối với mạng Solana.
Giao thức mạng là gì?
Giao thức mạng là một tập hợp quy tắc đã được thiết lập về cách dữ liệu được gửi giữa các thiết bị trên cùng một mạng. Giao thức mạng cho phép các thiết bị được kết nối dễ dàng giao tiếp với nhau, bất kể cấu trúc nội bộ, kiến trúc hay thiết kế của chúng.
Hãy tưởng tượng bạn đang ngồi đối diện một người bạn trong nhà hàng ở Paris. Cả hai quyết định nói tiếng Pháp, nhờ đó cuộc trò chuyện diễn ra suôn sẻ. Quyết định cùng sử dụng tiếng Pháp chính là sự thống nhất về một tập hợp quy tắc ngữ pháp, từ vựng và cách phát âm mà cả hai bên đều hiểu.
Giao thức mạng hoạt động tương tự đối với các thiết bị được kết nối, giống như cách tiếng Pháp đóng vai trò là một “giao thức” cho cuộc trò chuyện trong nhà hàng ở Paris. Quyết định sử dụng TCP, UDP hoặc QUIC đồng nghĩa với việc thống nhất tuân theo một tập hợp quy tắc và quy ước đã được thiết lập để trao đổi thông tin. Tuân thủ một giao thức mạng cụ thể đảm bảo các thiết bị được kết nối có thể hiểu nhau mà không gặp nhầm lẫn.
TCP là gì?
Giao thức kiểm soát truyền tải (TCP) là một giao diện truyền thông tiêu chuẩn dùng để gửi các luồng dữ liệu giữa hai điểm cuối trên mạng. Vint Cerf và Bob Kahn đã tạo ra Chương trình kiểm soát truyền tải, một giao thức nguyên khối sau đó được tách thành kiến trúc mô-đun gồm TCP và Giao thức Internet (IP). Toàn bộ bộ giao thức này được gọi là TCP/IP. Trong bài viết này, khi sử dụng chữ viết tắt TCP, tôi đang đề cập đến Giao thức kiểm soát truyền tải, không phải toàn bộ bộ giao thức.
TCP hướng kết nối; giao thức này yêu cầu thiết lập kết nối giữa máy khách và máy chủ trước khi gửi dữ liệu. TCP sử dụng quy trình bắt tay ba bước để thiết lập kết nối: đồng bộ hóa (SYN), đồng bộ hóa-xác nhận (SYN-ACK) và xác nhận (ACK). Bạn có thể hình dung SYN giống như đưa tay ra để bắt tay và hỏi xem đối phương đã sẵn sàng nói chuyện chưa; SYN-ACK giống như đối phương bắt tay bạn, nói rằng họ đã sẵn sàng và hỏi bạn có muốn tiếp tục không; còn ACK giống như bạn bắt tay lại và nói rằng mình muốn tiếp tục trò chuyện. Lúc này, một phiên được thiết lập. Cả hai bên đều biết họ đã kết nối với nhau và cùng đồng ý rằng họ sẵn sàng chia sẻ thông tin.
TCP chia dữ liệu thành các gói được gửi qua mạng. Một lượng nhỏ dữ liệu được thêm vào mỗi gói. Dữ liệu bổ sung này bao gồm số thứ tự dùng để phát hiện các gói bị mất hoặc sai vị trí, cùng một giá trị kiểm tra giúp phát hiện lỗi trong gói.
Khi cuộc trò chuyện bị gián đoạn, chúng ta yêu cầu đối phương lặp lại để chắc chắn rằng mình đã nghe đúng. TCP xử lý gián đoạn theo cách tương tự bằng cơ chế Yêu cầu lặp lại tự động (ARQ). Khi xảy ra sự cố, ARQ yêu cầu bên gửi gửi lại gói bị hỏng hoặc bị mất. Sau đó, TCP yêu cầu bên gửi giảm tốc độ truyền dữ liệu và giới hạn số gói chưa được xác nhận đang trên đường truyền. Khi lỗi được giải quyết, TCP sử dụng các cơ chế tránh tắc nghẽn và tăng dần tốc độ.
TCP không phải là giao thức phù hợp cho mọi trường hợp sử dụng vì nó sắp xếp toàn bộ lưu lượng theo thứ tự. Do đó, nếu một phần dữ liệu bị mất hoặc hỏng, mọi thứ sau gói đó đều phải chờ. Nhưng nếu chúng ta không cần chờ thì sao?
UDP là gì?
Giao thức gói dữ liệu người dùng (UDP) là một giao diện truyền thông tiêu chuẩn dùng để truyền dữ liệu qua mạng. Không giống TCP, UDP không cần kết nối và không đảm bảo việc phân phối, thứ tự hay chống trùng lặp các gói dữ liệu. UDP không có bất kỳ quy trình bắt tay nào, khiến quá trình truyền dữ liệu dễ bị ảnh hưởng bởi sự thiếu ổn định của mạng bên dưới. Điều này giúp UDP nhanh hơn các giao thức khác vì không mất thời gian thiết lập kết nối với đích. Tuy nhiên, đây cũng là lý do người ta gọi giao thức này là “Giao thức gói dữ liệu không đáng tin cậy”.
UDP hoạt động bằng cách gửi các datagram qua mạng. Datagram là những đơn vị dữ liệu độc lập hơn, chứa thông tin dùng để định tuyến từ nguồn đến đích. Nhờ thông tin đi kèm này, datagram không phụ thuộc vào các datagram khác để định tuyến. Mỗi datagram gồm một phần đầu và dữ liệu. Phần đầu có bốn trường, mỗi trường dài 16 bit: cổng nguồn tùy chọn, cổng đích, độ dài và giá trị kiểm tra tùy chọn. Quy trình gửi diễn ra như sau:
- Ứng dụng gửi tạo một socket UDP
- Ứng dụng gửi đặt dữ liệu cần gửi vào một datagram UDP, với phần đầu chứa cổng đích và mọi thông tin liên quan khác
- Datagram được gửi đến lớp IP để định tuyến và phân phối
- Lớp IP tiếp nhận datagram, chuyển nó đến lớp UDP và loại bỏ phần đầu
- Datagram được gửi đến ứng dụng đang lắng nghe trên cổng được chỉ định
Hãy hình dung UDP giống như nói chuyện với ai đó ở phía bên kia một căn phòng đông đúc. Bạn hét lên với người đó mà không quan tâm họ có nghe thấy hay không và cũng không chờ phản hồi. Trong trường hợp này, bạn muốn truyền tải thông điệp thật nhanh mà không cần một cuộc trao đổi kéo dài. Cách này có rủi ro vì họ có thể không nghe được mọi điều bạn nói, nhưng cũng có thể rất hiệu quả.
Tại sao bạn lại muốn sử dụng một giao thức truyền thông không kết nối như UDP khi đã có một lựa chọn đáng tin cậy hơn như TCP? UDP cực kỳ hữu ích cho các ứng dụng nhạy cảm về thời gian hoặc những trường hợp có thể chấp nhận mất một phần dữ liệu. Mất vài khung hình khi chơi trò chơi điện tử với bạn bè vẫn tốt hơn rất nhiều so với việc liên tục tạm dừng và chờ tải. UDP cũng được dùng cho các cuộc gọi VoIP, truy vấn Hệ thống tên miền (DNS), hoạt động giám sát và ghi nhật ký.
QUIC: Cân bằng hiệu quả và độ tin cậy
QUIC là một giao thức tầng truyền tải hiện đại do Jim Roskind tại Google thiết kế vào năm 2013. Giao thức này kết hợp độ tin cậy của TCP với lợi ích về độ trễ thấp của UDP, tạo ra môi trường tối ưu cho hoạt động giao tiếp bất đồng bộ nhanh chóng và an toàn. QUIC nổi bật nhờ tích hợp các phiên bảo mật và chiến lược kiểm soát luồng nâng cao đặc trưng của TCP vào khuôn khổ linh hoạt và nhanh hơn do UDP cung cấp.
Trong QUIC, quá trình thiết lập kết nối được tinh giản bằng cách tích hợp việc trao đổi khóa mật mã và thông tin chi tiết của giao thức vào quy trình bắt tay ban đầu. Quy trình này luôn được mã hóa an toàn bằng Transport Layer Security (TLS). Giao thức cho phép ghép kênh kết nối qua UDP, nhờ đó nhiều luồng dữ liệu độc lập có thể đến các điểm cuối mà không ảnh hưởng lẫn nhau. QUIC kiểm soát độc lập luồng của từng stream, đảm bảo rằng ngay cả khi một stream gặp lỗi, các stream khác vẫn không bị cản trở. Điều này giúp ngăn chặn tình trạng chặn đầu hàng (tức là một hàng gói bị giữ lại trong hàng đợi vì gói đầu tiên), một vấn đề thường xuyên xảy ra với các kết nối TCP.
Nếu một gói bị mất hoặc hỏng, QUIC sẽ truyền lại dữ liệu một cách thông minh để duy trì tính toàn vẹn và liên tục của hoạt động giao tiếp. Hơn nữa, QUIC có khả năng chống chịu tốt trước những thay đổi trong môi trường mạng. Mỗi gói mang một mã định danh kết nối giúp máy chủ xác định duy nhất kết nối đó, bất kể nguồn gửi. Vì mọi gói đều chứa ID này, kết nối có thể được tái thiết lập bằng cách gửi một gói khác, đồng nghĩa kết nối ban đầu vẫn còn hiệu lực. Nói một cách hình tượng, nếu bạn chuyển sang một căn phòng khác, cuộc trò chuyện sẽ không bị ngắt mà vẫn tiếp diễn liền mạch.
Hãy tưởng tượng bạn lại đang ở trong căn phòng đông đúc đó và cố gắng nói chuyện với bạn mình. Lần này, cả hai được trang bị bộ đàm mã hóa, cho phép trao đổi rõ ràng và an toàn. Khi cuộc trò chuyện đề cập đến nhiều chủ đề, người bạn sẽ giơ ngón tay cái để xác nhận từng thông điệp. Một ánh mắt bối rối sẽ báo hiệu bạn lặp lại thông điệp bị hiểu nhầm, đảm bảo không có gì bị thất lạc. Nếu bạn hoặc người bạn chuyển sang phòng khác, cuộc đối thoại vẫn không bị gián đoạn. Đó chính là bản chất của QUIC — hoạt động giao tiếp mạnh mẽ, thích ứng tốt và hiệu quả.
Cách Solana triển khai QUIC
QUIC mang lại nhiều lợi ích cho Solana, cụ thể gồm:
- Giảm thời gian thiết lập kết nối: Bằng cách tối ưu hóa quy trình bắt tay, QUIC giảm thiểu độ trễ
- Ghép kênh và quản lý gói hiệu quả: Khả năng xử lý đồng thời nhiều luồng dữ liệu mà không bị chặn đầu hàng của QUIC giúp cải thiện thông lượng và hiệu quả giao dịch
- Khả năng thích ứng và chống chịu: Giao thức được thiết kế để thích ứng với các điều kiện mạng thay đổi, một yêu cầu thiết yếu đối với hệ thống phân tán, phi tập trung như Solana
- Tùy chỉnh để tối ưu hóa mạng: Tính linh hoạt của QUIC cho phép tạo ra các triển khai tùy chỉnh như của Solana nhằm đáp ứng những mục tiêu cụ thể về hiệu suất và bảo mật mạng
QUIC đã được thêm vào các cổng tiếp nhận giao dịch của người dùng. Điều này cho phép giới hạn lưu lượng của từng tác nhân để mạng có thể tập trung xử lý các giao dịch hợp lệ. QUIC đang hoạt động trên Solana và đã được áp dụng hoàn toàn trên Mainnet-beta từ bản phát hành 1.13.4. Sau khi tích hợp, độ ổn định và thông lượng của mạng đã cải thiện rõ rệt.
Bất chấp những tiến bộ này, tình trạng tắc nghẽn mạng gần đây đã làm dấy lên tranh luận về hiệu quả điện toán của QUIC so với cách triển khai UDP trước đây của Solana. Những người chỉ trích cho rằng cách tiếp cận UDP thô cho phép validator chỉ tập trung vào xử lý giao dịch thay vì quản lý spam bắt tay và mã hóa. Hơn nữa, việc trao đổi và xác minh khóa không nằm trong quy trình bắt tay ban đầu của cách triển khai trên Solana. Solana sử dụng tùy chọn gửi một “gói thử thách” của QUIC để xác minh địa chỉ IP. Mục đích của thử thách này là tránh xác minh chứng chỉ trong bước đầu tiên của quy trình bắt tay, thay vào đó thực hiện việc này ở phần thứ hai sau khi xác thực IP. Việc Solana có từng ngừng hoạt động do spam hay các cuộc tấn công DDoS hay không vẫn còn gây tranh luận, vì sự cố mạng gần đây của Solana vào tháng 2 có thể được coi là một cuộc tấn công từ chối dịch vụ.
Khi mạng phát triển, điều quan trọng là phải liên tục xem xét và cải thiện các giải pháp đã triển khai. QUIC hướng đến giải quyết nhiều vấn đề của TCP và UDP, nhưng khi nhìn lại, hiệu quả của nó vẫn còn gây tranh luận. Một yếu tố quan trọng cần cân nhắc là cách một giải pháp vận hành trên phần cứng. Nhờ tính đơn giản, TCP hoạt động trên phần cứng tốt hơn nhiều so với QUIC. Có thể dễ dàng lập luận rằng với một tập lệnh AES, giao thức dựa trên TCP sẽ có thông lượng cao hơn QUIC và hiệu quả hơn về TPS.
Đáng chú ý, đội ngũ tại Jump Crypto đang mở rộng giới hạn của QUIC. Trong quá trình phát triển Firedancer, một client validator mới cho Solana, đội ngũ đã tạo ra cách triển khai riêng mạnh mẽ và có khả năng mở rộng. Hệ thống mạng của Firedancer được thiết kế từ đầu để tận dụng receive-side scaling, một dạng cân bằng tải được tăng tốc bằng phần cứng. Kiến trúc song song này cho phép từng lõi CPU xử lý hiệu quả một phần lưu lượng đến. Đội ngũ đã đăng trên X rằng:
Bạn có thể xem bản demo và chuỗi bài đăng về cột mốc kỹ thuật QUIC của Firedancer tại đây.
Kết luận
Xin chúc mừng! Trong bài viết này, chúng ta đã khám phá các nguyên tắc cơ bản của giao thức mạng, tập trung vào vai trò của TCP và UDP cũng như quá trình phát triển thành QUIC. Chúng ta cũng đã tìm hiểu cách Solana triển khai QUIC, nhấn mạnh vai trò then chốt của giao thức này trong việc cải thiện mạng. Mặc dù khả năng chống chịu của mạng Solana trước spam và các cuộc tấn công DDoS đã được cải thiện nhờ QUIC, sự phát triển của mạng cũng làm lộ rõ những thách thức và tranh luận xoay quanh hiệu quả điện toán cùng các chi tiết triển khai.
QUIC thể hiện mục tiêu cốt lõi của Solana là xây dựng một mạng có thông lượng cao và độ trễ thấp. Khả năng ghép kênh và khôi phục khi mất gói đưa Solana lên tuyến đầu trong các cuộc thảo luận về hiệu suất và khả năng mở rộng. Cách triển khai của đội ngũ Firedancer cho thấy khả năng thích ứng của QUIC, đồng thời nêu bật tiềm năng tối ưu hóa riêng để đáp ứng những nhu cầu luôn thay đổi của mạng.
Việc hiểu QUIC với tư cách nhà phát triển Solana giúp bạn đưa ra quyết định sáng suốt hơn về nhiều chủ đề, từ kiến trúc ứng dụng đến lỗi giao dịch. Solana không ngừng phát triển và QUIC cũng vậy. Luôn cập nhật những thay đổi mới nhất của mạng là cách tốt nhất để xây dựng các ứng dụng hiệu suất cao trên Solana. Ngay cả khi không phải nhà phát triển, hiểu QUIC ở mức kỹ thuật sâu hơn cũng có thể giúp bạn biết tại sao Solana là một blockchain hiệu suất cao, nổi tiếng về tốc độ và khả năng mở rộng.
Nếu đã đọc đến đây, anon, cảm ơn bạn! Hãy nhập địa chỉ email bên dưới để không bao giờ bỏ lỡ thông tin mới trên Solana. Sẵn sàng tìm hiểu sâu hơn? Hãy khám phá các bài viết mới nhất trên blog Helius và tiếp tục hành trình Solana ngay hôm nay.
Tài nguyên bổ sung / Đọc thêm
Bài viết liên quan
Đăng ký nhận tin từ Helius
Luôn cập nhật những thông tin mới nhất về phát triển Solana và nhận thông báo khi chúng tôi đăng bài


