
Trong các blockchain truyền thống, việc truyền khối diễn ra thông qua mạng ngang hàng trong đó các khối và giao dịch mới được phát đến tất cả các nút truyền. Quá trình này thường diễn ra tuần tự hoặc bị ngập. Tuy nhiên, phương pháp này không có khả năng mở rộng, vì nó trở nên khó quản lý khi mạng phát triển do số lượng giao tiếp quá lớn.
Hãy xem xét một mạng lưới gồm 35.000 trình xác thực. Trình dẫn đầu cần truyền một khối 128 MB (khoảng 500.000 giao dịch với 250 byte cho mỗi giao dịch) đến tất cả 35.000 trình xác thực. Việc triển khai truyền khối truyền thống sẽ yêu cầu trình dẫn đầu phải có một kết nối duy nhất đến từng trình xác thực và truyền toàn bộ 128 MB 35.000 lần. Điều này sẽ dẫn đến tổng lượng dữ liệu truyền là 4,69 TB, vượt xa khả năng băng thông thông thường và sẽ không khả thi để đáp ứng với quá nhiều kết nối.
Để giải quyết vấn đề phân phối khối chậm, Solana đã giới thiệu Turbine, một cơ chế truyền khối nhiều lớp được các cụm sử dụng để phát các mục nhập sổ cái đến tất cả các nút. Nói chung, Turbine chia các khối thành các khối nhỏ hơn và phân phối chúng thông qua thứ tự các nút, giảm tải cho từng nút.
Kiến trúc của Turbine lấy cảm hứng rất nhiều từ BitTorrent. Cả hai đều dựa vào việc phân đoạn dữ liệu—chia dữ liệu lớn thành các phần nhỏ hơn—và sử dụng mạng ngang hàng để truyền dữ liệu. Turbine được tối ưu hóa để truyền phát. Nó truyền dữ liệu chỉ bằng UDP, mang lại lợi ích về độ trễ. Nó triển khai một đường dẫn ngẫu nhiên cho mỗi gói qua mạng khi các nhà lãnh đạo (nhà sản xuất khối) truyền phát dữ liệu của họ. Tốc độ truyền khối cao này cho phép Solana duy trì thông lượng cao của nó.
Hơn nữa, Turbine giải quyết vấn đề về tính khả dụng của dữ liệu, đảm bảo rằng tất cả các nút có thể truy cập dữ liệu cần thiết để xác thực giao dịch một cách hiệu quả. Điều này được thực hiện mà không cần một lượng băng thông khổng lồ, đây là một nút thắt cổ chai phổ biến trong các mạng blockchain khác.
Trước khi một khối được truyền bá, người lãnh đạo sẽ xây dựng và sắp xếp khối dựa trên luồng giao dịch đang đến. Sau khi khối được xây dựng, nó đã sẵn sàng để được gửi qua Turbine đến phần còn lại của mạng. Quá trình này được gọi là truyền bá khối . Sau đó, các thông điệp được truyền giữa các trình xác thực và các thông điệp này được đóng gói trong dữ liệu khối để đáp ứng trạng thái cam kết là "đã xác nhận" hoặc "đã hoàn tất".
Trong khi các nhà lãnh đạo xây dựng và đề xuất toàn bộ khối, dữ liệu thực tế được gửi dưới dạng shreds (khối một phần) đến các trình xác thực khác trong mạng. Shreds là các đơn vị nguyên tử được gửi giữa các trình xác thực. Quá trình shreds và lan truyền này đảm bảo phân phối dữ liệu khối nhanh chóng và hiệu quả trên Solana, duy trì thông lượng cao và bảo mật mạng.
Lưu ý: Khối được xác nhận phải nhận được đa số phiếu bầu trong sổ cái, trong khi khối hoàn thiện phải được xác nhận và có hơn 31 khối được xác nhận được xây dựng trên khối mục tiêu.
Trước khi được gửi đến Turbine Tree, các mảnh vụn được mã hóa bằng mã hóa xóa Reed-Solomon, một phương pháp bảo vệ dữ liệu sử dụng các loại mã sửa lỗi cụ thể. Phương pháp này được thiết kế để bảo vệ chống mất dữ liệu trong trường hợp xảy ra lỗi hoặc sự cố. Nó chia dữ liệu thành các khối nhỏ hơn và mã hóa mỗi khối bằng thông tin bổ sung.
Turbine phụ thuộc rất nhiều vào việc truyền lại các gói tin giữa các trình xác thực có thể quyết định phát lại dữ liệu không chính xác hoặc dữ liệu không đầy đủ. Do việc truyền lại, bất kỳ mất mát gói tin nào trên toàn mạng đều được gộp lại và khả năng gói tin không đến được đích sẽ tăng lên ở mỗi lần nhảy. Ví dụ, nếu một trình dẫn truyền 20% các gói tin của khối dưới dạng mã xóa, thì mạng có thể loại bỏ bất kỳ 20% gói tin nào mà không làm mất khối. Các trình dẫn có thể điều chỉnh động con số này (tỷ lệ FEC) dựa trên các điều kiện mạng bằng cách tính đến các biến như mất mát gói tin trên toàn mạng mới quan sát được và độ sâu của cây.
Trong Solana, dữ liệu shreds là các khối một phần từ khối gốc được xây dựng bởi leader, và dữ liệu shreds phục hồi là các khối được mã hóa xóa do Reed-Solomon tạo ra. Các khối trên Solana thường tận dụng FEC là 32:32 (32 trong số 64 gói có thể bị mất mà không cần phải truyền lại).
Solana sử dụng Turbine Tree, một cấu trúc mạng có cấu trúc, để tạo điều kiện cho việc truyền bá shreds hiệu quả giữa các trình xác thực. Khi shreds được mã hóa đúng cách vào các nhóm shred tương ứng, chúng đã sẵn sàng để được truyền bá qua Turbine Tree để thông báo cho các trình xác thực khác trong mạng về trạng thái cập nhật nhất.
Turbine Tree, được tất cả mọi người biết đến, đảm bảo mỗi trình xác thực biết chính xác nơi họ chịu trách nhiệm chuyển tiếp shred đó. Turbine Tree thường là cây 2 hoặc 3 bước nhảy (tùy thuộc vào số lượng trình xác thực đang hoạt động), với giá trị DATA_PLANE_FANOUT hiện tại là 200.
Hơn nữa, các nút có thể dùng đến tin đồn và sửa chữa nếu chúng không nhận đủ shred hoặc nếu tỷ lệ mất dữ liệu vượt quá tỷ lệ FEC. Theo triển khai hiện tại, một nút không đủ shred để tái tạo khối sẽ gửi yêu cầu đến người dẫn đầu để truyền lại. Theo Turbine xác định, bất kỳ nút nào nhận được khối đầy đủ đều có thể gửi shred sửa chữa mà nút yêu cầu cần, do đó đẩy dữ liệu truyền xuống các khu vực của cây đang yêu cầu dữ liệu.
Trong báo cáo này, chúng tôi đã xem xét cơ chế truyền khối Turbine của Solana, cơ chế này chia các khối lớn thành các phần nhỏ hơn để phân phối dữ liệu hiệu quả trên toàn mạng. Chúng tôi đã nêu bật cách mã hóa xóa đảm bảo tính toàn vẹn của dữ liệu và cách Turbine Tree tạo điều kiện truyền nhanh giữa các trình xác thực.