Đường đến Neo3: Truy xuất dữ liệu khối theo chỉ mục

TINTUCNEO
TINTUCNEO
Mar 26 · 4 min read

Trong bài viết hôm nay, chúng ta sẽ xem xét một số cuộc thảo luận trước đây về chủ đề tối ưu hóa mạng, điều này dẫn đến những cải tiến hiện đang nằm ở cốt lõi của phương pháp đồng bộ hóa khối dựa trên chỉ mục mới. Theo cách tiếp cận này, các node có thể yêu cầu dữ liệu khối bị thiếu trong một tin nhắn nhỏ gọn, đơn lẻ chứa một loạt các chỉ mục khối mong muốn.

Đọc loạt bài Đường đến Neo3 tại đây.

Các đề xuất cải thiện giao thức mạng Neo có từ năm 2018, với nhiều sự không hiệu quả được xác định. Một số đề xuất từ ​​nhà phát triển cộng đồng Kevaundray đã lưu ý một số vấn đề này, tập trung vào việc cải thiện thời gian phản hồi để ngắt kết nối node và giảm độ trễ trong đồng bộ hóa khối.

Những đề xuất này dẫn đến các cải tiến đã thực hiện, chẳng hạn như bổ sung các thông điệp nhịp tim ping / pong để kiểm tra chiều cao node, nhưng cũng truyền cảm hứng cho một giải pháp khác. Một đề xuất của nhà bảo trì neo-python của COZ — IZje vào tháng 12 năm 2018 đã cung cấp ví dụ đầu tiên về đồng bộ hóa dựa trên chỉ mục. Trong đề xuất, Ixje lưu ý các vấn đề không hiệu quả và ngữ nghĩa hiện tại với lệnh getblocks:

“Các lệnh getblocks hiện tại không hiệu quả và cũng có một cái tên sai. Tên cho thấy bạn sẽ nhận được khối. Trong thực tế, bạn nhận được băm (thông qua một tin nhắn inv). Sau đó, bạn về cơ bản đóng gói lại thông tin tương tự của thông báo inv này nhưng bây giờ với lệnh getdata để cuối cùng nhận được các tin nhắn khối.”

Ixje đã đề xuất một lệnh hiệu quả hơn, getfullblocks, giúp giảm lưu lượng mạng và logic nghiệp vụ để truy xuất các khối bằng cách chuyển quy trình thành quy trình hai bước. Thay vì yêu cầu các tiêu đề, nhận các tiêu đề, sau đó sử dụng các giá trị băm để yêu cầu và truy xuất dữ liệu khối, các node sẽ có thể yêu cầu các khối mong muốn và nhận trực tiếp dữ liệu tương ứng.

Tiến lên một bước nữa, đó là đề xuất sử dụng chỉ mục khối lần đầu tiên được đưa ra, điều này mang lại lợi thế giảm kích thước thư và loại bỏ nhu cầu biết băm (bao gồm cả băm khối genesis) để bắt đầu truy xuất khối .

Đồng bộ hóa chỉ mục

Phương pháp đề xuất của Ixje đã bỏ qua cách tiếp cận tiêu đề đầu tiên có mặt khắp nơi trong ngành công nghiệp blockchain mà chúng ta đã thảo luận trong bài viết trước. Bằng cách tận dụng tính chất không thể làm được của Neo được cung cấp bởi cơ chế đồng thuận dBFT, các node trên mạng có thể yêu cầu dữ liệu khối theo chỉ mục.

Điều này là do dBFT đảm bảo rằng mọi node sẽ chia sẻ cùng một quan điểm về blockchain như các node đồng thuận, có nghĩa là họ có thể được đảm bảo rằng dữ liệu tại mỗi chỉ số khối luôn giống hệt nhau. Trong trường hợp các node có dữ liệu hoặc trạng thái chặn không chính xác, họ có thể nhanh chóng nhận ra vấn đề bằng cách tham khảo trạng thái đã ký được chia sẻ qua tin nhắn P2P.

Cùng với sự đơn giản hóa trong logic truy xuất khối, về mặt lý thuyết, đề xuất đã đưa ra những cải tiến đáng kể cho quá trình đồng bộ hóa. Mặc dù vậy, các cuộc thảo luận đã bị hoãn lại sau thông báo của Neo3. Cuối năm nay, khi nhóm nhà phát triển cốt lõi bắt đầu đánh giá các thay đổi sẽ được thực hiện như một phần của Neo3, sự thiếu hiệu quả xuất phát từ cách tiếp cận đồng bộ hóa đầu tiên đã xuất hiện trở lại.

Điều này đã khiến Ixje nhắc lại đề xuất trước đó của mình, chính thức hóa việc sử dụng các chỉ mục khối thay vì băm để đồng bộ hóa:

“Đề xuất này giới thiệu một lệnh getfullblocks mới. Nó có các tham số IndexStart và Count cho biết chiều cao Khối bắt đầu và có bao nhiêu khối từ điểm đó trở về trước. Nó sử dụng lại các tải trọng kiểu inv tương tự được sử dụng trong phản hồi cho các tin nhắn getdata, có nghĩa là không cần phải thay đổi bất kỳ logic nhận khối nào. Nó chỉ làm giảm rất nhiều chi phí và độ phức tạp của các khối đồng bộ hóa thông qua các tiêu đề.”

Bên cạnh đề xuất, Ixje cung cấp một ví dụ hoạt động về code từ neo3-python và cũng nêu bật hiệu quả của cách tiếp cận với một ví dụ đơn giản về giảm kích thước thông báo để yêu cầu các khối với cách tiếp cận chỉ mục.

Mặc dù có những lợi thế, nhưng những nỗ lực để thực hiện hỗ trợ cho đồng bộ hóa chỉ mục cho thấy những thay đổi sẽ là cần thiết trong các khu vực bị ảnh hưởng khác, chẳng hạn như Trình quản lý tác vụ. Trong tập tiếp theo, chúng ta sẽ cùng khám phá việc thực hiện đồng bộ hóa chỉ mục và các thay đổi cần thiết chi tiết hơn và xem xét các cải tiến liên quan khác.

TINTUCNEO — Tham gia các cộng đồng Tin tức NEO tại:

Website tin tức
Medium tin tức
Telegram tin tức
Telegram Thảo luận
Fanpage tin tức
Kênh Youtube

TINTUCNEO

TINTUCNEO — TIN TỨC NEO — Kênh truyền thông tin tức và cộng…

TINTUCNEO

Written by

TINTUCNEO

TINTUCNEO — Tin Tức NEO — Kênh truyền thông tin tức và cộng đồng ủng hộ blockchain NEO tại Việt Nam

TINTUCNEO

TINTUCNEO

TINTUCNEO — TIN TỨC NEO — Kênh truyền thông tin tức và cộng đồng ủng hộ blockchain NEO tại Việt Nam

More From Medium

More on Tintucneo from TINTUCNEO

Apr 3 · 5 min read

More on Tintucneo from TINTUCNEO

More on Tintucneo from TINTUCNEO

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade