Tiêu đề gốc: "Kế hoạch nhắn tin chuỗi chéo của Polkadot (XCMP)"
Nguồn gốc: PolkaWorld
Tác giả: Fatemeh Shirazi, Logan Saether, Alistair Stewart , Rob Habermier, Gavin Wood
Trong những tháng gần đây, nhóm nghiên cứu của Web3 Foundation đã nghiên cứu về văn bản nhắn tin xuyên chuỗi (XCMP ) tổng quan về chức năng. Nó là thành phần chính của Polkadot, dự án hàng đầu của Web3 Foundation. Chúng tôi rất vui được chia sẻ công việc của chúng tôi với bạn!
Lược đồ Truyền tin nhắn chuỗi chéo (XCMP) là một tập hợp con của giao thức Polkadot. Nó xác định cách các thông điệp có thể được truyền giữa các parachain mà không có bất kỳ giả định nào khác về độ tin cậy ngoài tính bảo mật của chuỗi chuyển tiếp được chia sẻ. Bài viết này giải thích giao thức nhắn tin của parachain và chủ yếu dựa vào kiến trúc và thiết kế chuỗi chuyển tiếp độc đáo của Polkadot.
Thỏa thuận bao gồm:
· Về vấn đề đồng thuận: cơ chế xếp hàng và sắp xếp các tin nhắn.
·Tích hợp với các phần khác của chuỗi chuyển tiếp, cụ thể là cơ chế hoàn thiện của GRANDPA: tính sẵn có của dữ liệu.
·Sử dụng kết hợp với chức năng xác minh parachain: đầu vào và đầu ra tin nhắn.
Ngoài ra, bài viết này còn đánh giá quá trình phân phối, cách đạt được lịch sử nhất quán và các ý tưởng ngăn chặn các cuộc tấn công DoS. Cuối cùng, chúng tôi xem xét XCMP kết hợp với SPREE và kết thúc bằng bản tóm tắt các tính năng do XCMP triển khai.
Ngữ nghĩa thông báo và chi tiết mạng (chẳng hạn như khám phá ngang hàng) không được đề cập trong bài viết này.
Giới thiệu
Một tính năng chính của Polkadot "phiên bản 1.0" là cho phép các parachain bị cô lập ban đầu gửi tin nhắn cho nhau một cách an toàn và không cần tin cậy.
Với mục đích này, chúng tôi xác định thông báo giống như giao dịch. Cả hai đều đề cập đến dữ liệu đến từ bên ngoài chuỗi nhận, đồng thời đều ngụ ý và yêu cầu chuỗi phản ứng với dữ liệu theo logic bên trong của nó. Với mức độ trễ của hệ thống thực, chuỗi không thể từ chối hoặc làm xáo trộn ý nghĩa của dữ liệu. Ví dụ: trong bối cảnh Bitcoin, thuộc tính này có nghĩa là những người khai thác Bitcoin bị lỗi hoặc độc hại không thể phân phối lại tiền, do đó đây là cơ sở của một hệ thống đồng thuận kinh tế tiền điện tử tốt.
Sự khác biệt chính giữa giao dịch và tin nhắn là giao dịch có chứa chữ ký để chứng minh nguồn gốc của dữ liệu (và do đó, thẩm quyền của chỉ dẫn ). Đối với tin nhắn, nguồn gốc chỉ được chứng minh thông qua cơ sở hạ tầng xác minh kinh tế tiền điện tử chống Byzantine của Polkadot, phần lớn giống như cách các tin nhắn được truyền giữa các hợp đồng Ethereum.
Ví dụ
Trước khi thảo luận chi tiết từng thành phần của XCMP, trước tiên chúng ta hãy đưa ra một ví dụ về cách kết nối các tin nhắn gửi đi trên một parachain hợp đồng thông minh nhất định (A trong Hình 1) với một tài chính phân tán (DeFi) song song nhất định. chuỗi (B trong Hình 1) để nhập khối ứng cử viên tiếp theo từ bộ đối chiếu của parachain DeFi.
Ở độ cao khối 300 của chuỗi chuyển tiếp, parachain hợp đồng thông minh bắt đầu một thông báo cho điểm cuối của "32", đó là DeFi ID parachain của parachain. Tin nhắn trước tiên sẽ được đưa vào hàng đợi gửi đi hoặc gửi đi của parachain hợp đồng thông minh.
Tất cả các nút của parachain hợp đồng thông minh sẽ bắt đầu bàn tán về tin nhắn trong mạng (xem phần "Giao hàng" bên dưới). Nếu một số nút trong chuỗi hợp đồng thông minh cũng là các nút đầy đủ của chuỗi DeFi và các nút này đóng vai trò là chất kết dính giữa hai mạng tin đồn bằng cách chuyển tiếp tin nhắn. Nếu không có nút chia sẻ mạng nào cần được duyệt qua, cơ chế dự phòng (xem phần Dự phòng bên dưới) sẽ được gọi.
Sau khi tin nhắn đến tay người thu thập parachain DeFi, họ sẽ nhận được tin nhắn này (và bất kỳ tin nhắn nào khác mà nó nhận được) và nhập nó vào hàng đợi vào hoặc vào để xử lý trong khối ứng cử viên tiếp theo của nó.

Hình 1: Hiển thị các nút thu và nút đầy đủ tương ứng với hai chuỗi song song A và B. Có hai nút là nút đầy đủ của cả mạng Parachain A và mạng Parachain B.
Các nhà sưu tập trên parachain DeFi sẽ tạo ra các khối ứng cử viên cho khối chuỗi chuyển tiếp 301. Khối ứng cử viên này sẽ yêu cầu bằng chứng rằng thông báo mà nó thực thi trên khối A là thông báo chính xác. Khối chuỗi chuyển tiếp 300 chứa tiêu đề khối parachain của khối trong A, đây là một lượng nhỏ dữ liệu bao gồm hàm băm gốc của thông báo có thể được sử dụng để xác thực thông báo.
Khối ứng cử viên này sẽ bao gồm bằng chứng ứng dụng khách ánh sáng chuỗi chuyển tiếp cho thấy gốc thư này nằm trong chuỗi chuyển tiếp và bằng chứng này Kết hợp với các tin nhắn đã gửi bởi chuỗi gửi.
Người xác thực Parachain của parachain DeFi sẽ có thể sử dụng những bằng chứng này để xác minh tính toàn vẹn của các khối ứng cử viên được đề xuất từ parachain DeFi. Các tin nhắn ban đầu từ chuỗi hợp đồng thông minh sau đó được đưa vào parachain DeFi, cung cấp bảo mật mà không cần thêm nút và dựa vào bảo mật được chia sẻ từ Polkadot.
Xếp hàng và sắp xếp thư
Mỗi khối parachain trong Polkadot có thể tạo một danh sách tin nhắn trống để gửi đến các khối khác. Những danh sách này được gọi là hàng đợi đi ra. Khi một tin nhắn được gửi đi, nó sẽ được đưa vào hàng đợi nhập của parachain. Parachains phải xử lý danh sách đầu vào theo thứ tự.
Người thu thập hoặc người xác thực cố gắng thu thập các tin nhắn cho hàng đợi thoát của parachain. Nó gọi mục nhập của parachain và Tìm kiếm thông tin liên lạc tập hợp những tin tức liên quan và chờ đợi những tin tức chưa được bàn tán.
Truyền tải thông điệp
Giả sử rằng mỗi parachain có một mạng lưới các nút đầy đủ được kết nối. Chúng tôi giả định rằng mỗi nút hoàn chỉnh biết về một tập hợp con của các nút hoàn chỉnh khác trong hệ thống mà chúng tôi gọi là hàng xóm. Lưu ý rằng chúng tôi không đưa ra giả định nào về cấu trúc liên kết và đường kính của các mạng này.
Cách đơn giản nhất để gửi tin nhắn là sử dụng giao thức buôn chuyện. Hãy nhớ lại rằng các đồng nghiệp thường trao đổi với nhau về suy nghĩ của họ trong kỳ nghỉ lễ hiện tại. Để đạt được việc phân phối hiệu quả hơn, các tin nhắn chưa gửi chỉ được gửi đến các nút lân cận có cùng chế độ xem.
Nếu có các nút chung giữa hai mạng, thông báo sẽ truyền từ mạng parachain này sang mạng parachain khác. 
Hình 2: Hiển thị quá trình gửi tin nhắn được Bagua hoàn thành. Chúng tôi giả định rằng tin nhắn này được gửi bởi bộ đối chiếu hồng, đơn vị tạo ra khối parachain mới nhất.
Trả lại dữ liệu
Tuy nhiên, nếu người xác thực parachain nhận nhận ra rằng tin nhắn không bị rò rỉ trong parachain nhận, thì họ sẽ yêu cầu người xác thực parachain gửi thông tin parachain. Sau khi nhận được thông tin này, họ sẽ bàn tán về nó trong mạng parachain nhận.

Hình 3: Hiển thị quá trình phân phối khôi phục khi các parachain gửi và nhận không chia sẻ bất kỳ nút đầy đủ nào.
Cơ chế phân phối khôi phục được hiển thị trong Hình 3. Chúng tôi giả định rằng parachain A muốn gửi tin nhắn đến parachain C và parachain C không có nút đầy đủ được chia sẻ với A. Sau khi người xác thực parachain của parachain C nhận thấy rằng tin nhắn chưa đến, họ sẽ đưa ra yêu cầu tới trình xác thực parachain gửi, chịu trách nhiệm lưu tin nhắn đầu ra từ parachain của họ. Sau khi có phản hồi cho yêu cầu, người xác thực của parachain C sẽ gửi tin nhắn trong parachain C.
Có lịch sử nhất quán
Một trong những tính năng chính mà chúng tôi hy vọng có được từ XCMP là chuẩn hóa các khối parachain, Đó là là những khối parachain mà cuối cùng chúng tôi đồng ý rằng điều đó đã xảy ra. Điều này có nghĩa là trong khối parachain hiện tại, chỉ những tin nhắn được gửi từ các khối parachain, bản thân chúng đều chuẩn và cũ hơn khối parachain hiện tại, mới được xử lý.
Chuỗi chuyển tiếp xác định lịch sử của tất cả các parachain. Ví dụ: tiêu đề khối từ parachain B nằm trong khối chuỗi chuyển tiếp 301 và có thể nói rằng nó ảnh hưởng đến tất cả các tin nhắn trước khối 300. Nếu nó được áp dụng cho tất cả các tin nhắn trước khối 300, nó sẽ được áp dụng cho các tin nhắn được gửi bởi khối parachain A và nó sẽ chỉ có hiệu lực nếu tiêu đề khối của parachain A xuất hiện trong khối 300 của chuỗi chuyển tiếp hoặc sớm hơn. .
Điều này có nghĩa là chuỗi chuyển tiếp cần đóng vai trò xác thực các tin nhắn. Tuy nhiên, vì chúng tôi không thể đưa nhiều dữ liệu vào các tiêu đề khối parachain này nên bản thân chuỗi chuyển tiếp sẽ không có tải trọng của thông báo. Thay vào đó, chúng tôi duy trì lịch sử nhất quán một cách hiệu quả bằng cách sử dụng các cây Merkle lồng nhau. Tiêu đề khối parachain tương ứng với một tin nhắn đã gửi sẽ chứa hàm băm của gốc tin nhắn, là gốc của cây Merkle. Đổi lại, các lá của cây Merkle này là tiêu đề khối của chuỗi băm thông điệp từ parachain này sang parachain khác.
Điều này có nghĩa là có một chuỗi băm chứa hàm băm của mỗi tin nhắn, cho phép xác minh tất cả các tin nhắn được gửi từ parachain này sang parachain khác. Điều này cho phép người thu thập xây dựng bằng chứng về nhiều hàm băm mà họ đã hành động trên các thông báo và chỉ trên chúng, bằng cách trước tiên chỉ ra rằng gốc của thông báo nằm trong chuỗi chuyển tiếp, sau đó chứng minh rằng đây là các thông báo từ các hàm băm gốc của thư. công việc đó làm việc.
Để biết thêm thông tin về chủ đề này, hãy xem:
https ://research.web3.foundation/en/latest/polkadot/XCMP.html
Xác thực đầu vào và đầu ra
Hãy nhớ lại rằng Polkadot bao gồm một chuỗi chuyển tiếp và nhiều chuỗi song song (dự kiến lên tới 100).
Tiêu đề khối Parachain chứa thư gốc của thư gửi đi. Để tạo khối parachain trên parachain dựa trên khối chuỗi chuyển tiếp cụ thể, người thu thập cần xem parachain nào được tạo giữa khối chuỗi chuyển tiếp đó và chuỗi chuyển tiếp bao gồm tiêu đề khối parachain cuối cùng của đầu parachain đó. Đối với những tin nhắn này, parachain cần hành động dựa trên dữ liệu tin nhắn tương ứng.

Hình 4: trình bày cấu trúc của ba parachains A, B và C trong các khối Parachain vòng 0, 1 và 2, và các tin nhắn được gửi mỗi vòng trong các parachain này.
Chức năng xác minh chuyển đổi trạng thái chuỗi (STVF) sử dụng chức năng xác minh để xác minh xem thông báo đầu vào có được thực thi hay không. Chức năng xác thực là một phần của WebAssugging để kiểm tra xem quá trình chuyển đổi trạng thái của parachain có thực sự hợp lệ hay không. Nó liên kết trạng thái mới của parachain và một tập hợp các thông báo đầu ra với thông báo trạng thái trước đó của parachain, dữ liệu khối parachain và một tập hợp các thông báo đầu vào được định tuyến chính xác từ các parachain khác hoặc bằng các chuỗi chuyển tiếp.
Hình 4 hiển thị một ví dụ trong đó các khối parachain được tạo và thông báo giữa ba parachains A, B và C được hiển thị cho các vòng 0, 1, 2. Giả sử rằng parachain B không tạo ra bất kỳ khối parachain nào ở vòng 0 và parachain C không tạo ra bất kỳ khối parachain nào ở vòng 1. Khối Parachain B1 được tạo ở vòng 1 lấy tin nhắn m1 làm tin nhắn đầu vào và trả lời parachain A bằng cách gửi tin nhắn m3 ở vòng 1. Khối Parachain C1 được tạo ở vòng 2 cần nhận thông báo m2 và m4 trong hàng đợi vào chưa được xử lý.
Tính khả dụng của tin nhắn
Sau khi tin nhắn được đưa vào hàng đợi đầu ra, chúng sẽ được cung cấp cho người thu thập và gửi parachains. nút đầy đủ được lưu. Trình xác thực Parachain cũng sẽ giữ lại thông báo khi tiêu đề của khối parachain gửi được đưa vào chuỗi chuyển tiếp. Người thu thập và các nút đầy đủ nhận parachain cũng cần biết tải trọng của tin nhắn được gửi giữa các parachain. Tất cả các thực thể khác cần biết rằng tin nhắn tồn tại chỉ có thể lưu trữ các hàm băm, có thể được sử dụng để xác minh tin nhắn.
Để đảm bảo tính khả dụng, chúng tôi yêu cầu tất cả người xác thực phải giữ các phần được mã hóa xóa để có thể khôi phục bất kỳ thông báo parachain nào. Các đoạn mã hóa xóa này được tạo ra và phân phối bởi các trình xác thực parachain gửi parachain. 1/3 số đoạn mã bị xóa là đủ để khôi phục tất cả tin nhắn. Xác nhận cuối cùng yêu cầu cử tri (người xác nhận) phải nhận các đoạn mã bị xóa này, nếu không họ sẽ bị phạt khi bỏ phiếu. Do đó, 2/3 các đoạn được mã hóa xóa phải có sẵn tại thời điểm xác nhận cuối cùng; từ đó chúng ta có thể đảm bảo rằng thông báo cuối cùng cũng có sẵn.
Ngăn chặn các cuộc tấn công DoS
Lưu ý rằng mục đích của XCMP không phải là chỉ định định dạng chuẩn cho tin nhắn. Tuy nhiên, mỗi parachain có giới hạn về tổng kích thước tin nhắn mà nó có thể gửi đến một parachain khác. Ngoài ra, các giao thức tin đồn sử dụng khả năng phân phối có giới hạn để tránh các tin nhắn lớn hơn.
Đối với các luồng song song không thường xuyên đặt các khối vào chuỗi chuyển tiếp, hàng đợi các tin nhắn chưa được xử lý có thể tăng lên đáng kể. Để hạn chế điều này, parachain gửi sẽ duy trì hàng đợi đầu ra với giới hạn kích thước cho chuỗi này. Nó chỉ có thể xóa tin nhắn cũ khi biết chúng đã được nhận. Chuỗi nhận xuất bản một hình mờ cho biết số lượng khối đã được xử lý trong các khối của parachain này. Chuỗi gửi có thể sử dụng hình mờ này để sắp xếp hàng đợi đầu ra của nó.
Ngoài ra, chúng tôi dự định cung cấp cho parachain nhận khả năng ngăn chặn một parachain khác gửi tin nhắn (tính năng này chưa được triển khai) . Các luồng song song cũng có thể vô hiệu hóa các chức năng XCMP để tránh xử lý số lượng lớn tin nhắn.
XCMP và SPREE
SPREE (Vùng thực thi thời gian chạy được bảo vệ chung) là các đoạn logic tương tự như mô-đun thời gian chạy, nhưng chúng nằm trên chuỗi chuyển tiếp và chức năng của chúng có thể được chọn bởi parachain.
Những đoạn logic này là những đoạn mã WebAssembly được tải lên Polkadot thông qua cơ chế quản trị hoặc parachain. Sau khi các đoạn logic này được tải lên Polkadot, tất cả các parachain khác có thể quyết định chọn tham gia vào logic đó. Mô-đun SPREE sẽ duy trì bộ lưu trữ riêng độc lập với parachain, nhưng có thể được gọi thông qua giao diện với parachain. Parachain sẽ gửi tin nhắn đến mô-đun SPREE một cách đồng bộ. Để biết thêm thông tin về SPREE, hãy xem bài viết wiki của nó:
https://wiki.polkadot.network/docs/en/ learn- vui vẻ.
Những phần logic này xử lý thông báo XCMP tới mô-đun SPREE và đảm bảo rằng khi một thao tác được thực hiện trên thông báo, nó sẽ sử dụng Mô-đun SPREE có cùng mã với bất kỳ parachain nào khác. Các mô-đun SPREE rất quan trọng đối với kiến trúc XCMP tổng thể vì chúng đảm bảo rằng việc diễn giải mã cụ thể sẽ được thực thi trên parachain mục tiêu. Mặc dù XCMP đảm bảo việc gửi tin nhắn nhưng nó không đảm bảo việc thực thi mã, tức là parachain nhận sẽ diễn giải tin nhắn như thế nào. Cập nhật mã cho mô-đun SPREE sẽ được đồng bộ hóa với parachain. Ngoài các lợi ích bảo mật, điều này có nghĩa là các định dạng tin nhắn có thể được thay đổi mà không cần phải phối hợp cập nhật trên nhiều parachain.
Tóm lại, mặc dù XCMP hoàn thành việc gửi tin nhắn không cần sự tin cậy, nhưng SPREE là cách giải thích tin nhắn không đáng tin cậy và là một phần quan trọng tạo nên tính hữu dụng của XCMP. Các thông báo XCMP được gửi đến mô-đun SPREE giúp các nhà phát triển và người dùng lên lịch gửi thông báo rõ ràng về cách xử lý thông báo.
Tóm tắt thuộc tính XCMP
Lược đồ XCMP có thể đạt được các thuộc tính sau:
Không đáng tin cậy: Vì cùng một bộ trình xác minh đảm bảo gửi thông báo chính xác tới đồng thời bảo mật một parachain này với một parachain khác, XCMP không yêu cầu nhiều sự tin cậy hơn một blockchain đơn lẻ.
Tính nhất quán: Chúng tôi đảm bảo tuyệt đối rằng tin nhắn nhận được giống hệt với tin nhắn đã gửi, bất chấp mọi sự sắp xếp lại chuỗi .
Tính hợp lệ: Polkadot đảm bảo rằng tin nhắn sẽ không bị mất và vẫn có sẵn. Điều này đạt được bằng cách phân phối các đoạn mã hóa xóa có thể được sử dụng để tái tạo lại thông điệp.
Duy trì trình tự chính xác: Thông qua xác minh đầu vào/đầu ra, đảm bảo duy trì trình tự chính xác của các thông báo đầu ra khối chuỗi song song.
Hiệu quả: Giao thức này tránh chiếm quá nhiều băng thông và cho phép thư đến nhanh nhất có thể.
Để biết thêm thông tin về Web3 Foundation, hãy truy cập web3.foundation.
Để tìm hiểu thêm về chức năng và tính năng của Polkadot, hãy xem Wiki của chúng tôi (https://wiki.polkadot.network/), Chúng tôi không ngừng cập nhật và cải tiến nó.
Văn bản gốc: https://medium.com/web3foundation/polkadots-messaging-scheme-b1ec560908b7
Bản dịch: PolkaWorld
Liên kết nguồn: weixin.qq.com
p>
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm Telegram đăng ký: https://t.me/theblockbeats
Nhóm Telegram thảo luận: https://t.me/BlockBeats_App
Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia

